DRF не может найти существующий элемент модели в APIPython

Программы на Python
Ответить
Anonymous
 DRF не может найти существующий элемент модели в API

Сообщение Anonymous »

Я создаю API с помощью Django Rest Framework и постоянно сталкиваюсь с проблемой, из-за которой я не могу извлечь ни одного элемента из моей модели django в браузере.
У меня есть две конечные точки: одна получает потребителя по идентификатору, а другая — заполняет потребителей. Тот, который получает всех потребителей, работает нормально, и я могу загрузить его в браузер, но когда дело доходит до захвата одного элемента, но идентификатор, который является UUID, кажется, терпит неудачу или даже больше, поэтому он продолжает попадать в 404.
Я проверил, что идентификатор существует в БД и там есть записи
Просто хочу отметить, что это все фиктивные данные
Views.py
@api_view(["GET"])
def get_power_consumer_by_id(request, power_consumer_id):
power_consumer = get_object_or_404(PowerConsumer, id=power_consumer_id)

serializer = PowerConsumerSerializer(power_consumer)

return Response(
serializer.data,
status=status.HTTP_200_OK
)

@api_view(["GET"])
def get_power_consumer(request):
if request.method == "GET":

try:
power_consumer = PowerConsumer.objects.all()
serializer = PowerConsumerSerializer(power_consumer, many=True)
return Response(serializer.data, status=status.HTTP_200_OK)
except Exception:
return Response(
{"error": "Failed to get power consumer data"},
status=status.HTTP_500_INTERNAL_SERVER_ERROR
)

Шаблоны URL
urlpatterns = [
path("v1/power_consumer//", get_power_consumer_by_id),
path("v1/power_consumer/", get_power_consumer)
]

Ответ JSON
[{"id":"bbbbbbb2-bbbb-bbbb-bbbb-bbbbbbbbbbbb","account_number":"PC-0002","billing_mode":"MANUAL_INVOICE","billing_cycle":"MONTHLY","billing_day_of_month":20,"billing_time":"02:00:00","predicted_bill_kobo":1200000,"deficit_amount_kobo":0,"is_at_risk":false,"next_billing_at":"2026-02-20T02:00:00Z","last_billed_at":"2026-01-20T02:00:00Z","supplier":"aaaaaaa1-aaaa-aaaa-aaaa-aaaaaaaaaaaa"},{"id":"bbbbbbb3-bbbb-bbbb-bbbb-bbbbbbbbbbbb","account_number":"PC-0003","billing_mode":"AUTO_CHARGE","billing_cycle":"WEEKLY","billing_day_of_month":null,"billing_time":"02:00:00","predicted_bill_kobo":300000,"deficit_amount_kobo":50000,"is_at_risk":true,"next_billing_at":"2026-01-29T02:00:00Z","last_billed_at":"2026-01-22T02:00:00Z","supplier":"aaaaaaa1-aaaa-aaaa-aaaa-aaaaaaaaaaaa"},{"id":"bbbbbbb4-bbbb-bbbb-bbbb-bbbbbbbbbbbb","account_number":"PC-0004","billing_mode":"MANUAL_INVOICE","billing_cycle":"BIWEEKLY","billing_day_of_month":null,"billing_time":"02:00:00","predicted_bill_kobo":800000,"deficit_amount_kobo":150000,"is_at_risk":false,"next_billing_at":"2026-01-28T02:00:00Z","last_billed_at":"2026-01-14T02:00:00Z","supplier":"aaaaaaa1-aaaa-aaaa-aaaa-aaaaaaaaaaaa"},{"id":"bbbbbbb5-bbbb-bbbb-bbbb-bbbbbbbbbbbb","account_number":"PC-0005","billing_mode":"AUTO_CHARGE","billing_cycle":"DAILY","billing_day_of_month":null,"billing_time":"02:00:00","predicted_bill_kobo":45000,"deficit_amount_kobo":0,"is_at_risk":false,"next_billing_at":"2026-01-26T02:00:00Z","last_billed_at":"2026-01-25T02:00:00Z","supplier":"aaaaaaa1-aaaa-aaaa-aaaa-aaaaaaaaaaaa"}]

Код модели
class PowerConsumer(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
supplier = models.ForeignKey(PowerSupplier, on_delete=models.CASCADE)
account_number = models.CharField(max_length=100, unique=True)
billing_mode = models.CharField(max_length=50)
billing_cycle = models.CharField(max_length=50)
billing_day_of_month = models.PositiveSmallIntegerField(null=True, blank=True)
billing_time = models.TimeField(default='02:00')
predicted_bill_kobo = models.BigIntegerField(default=0)
deficit_amount_kobo = models.BigIntegerField(default=0)
is_at_risk = models.BooleanField(default=False)
next_billing_at = models.DateTimeField(null=True, blank=True)
last_billed_at = models.DateTimeField(null=True, blank=True)

def __str__(self):
return f"Consumer {self.id}"


Подробнее здесь: https://stackoverflow.com/questions/798 ... tem-in-api
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»