Я пытаюсь получить последние заказы всех моих клиентов в моем приложении. Я вхожу как пользователь, получаю действительный токен и пробую API. Я получаю эту ошибку каждый раз, когда пытаюсь вызвать свой API: «ValueError: Невозможно запросить« jake thedogg »: должен быть экземпляром« CustomerDetails »». Я пытаюсь получить все экземпляры заказов от этого пользователя.
def customer_get_latest_order(request):
customer = get_user(request)
if not customer:
return JsonResponse({'invalid token'})
order = OrderSerializer(Order.objects.filter(customer=customer).order_by("-id"),
many=True,
context={"request": request}
).data
return JsonResponse({"order": order})
Модель:
class OrderDetail(models.Model):
order = models.ForeignKey(
Order, related_name='order_details', on_delete=models.CASCADE)
product_size = models.ForeignKey(ProductSize, on_delete=models.CASCADE)
quantity = models.IntegerField()
sub_total = models.FloatField()
def __str__(self):
return str(self.id)
Сериализаторы:
class OrderSerializer(serializers.ModelSerializer):
customer = CustomerOrderSerializer()
driver = OrderDriverSerializer()
dispensary = OrderDispensarySerializer()
order_details = OrderDetailSerializer(many=True)
status = serializers.ReadOnlyField(source="get_status_display")
class Meta:
model = Order
fields = ("id", "customer", "dispensary", 'delivery_signature', 'order_rated', 'quantity',
"driver", "order_details", "total", "status", "address", "created_at")
Модель заказа:
class Order(models.Model):
a = 1
b = 2
c = 3
d = 4
e = 5
STATUS_CHOICES = (
(a, "ah"),
(b, "bb"),
(c, "cc"),
(d, "dd"),
(CANCELED, "Canceled/Refunded")
)
address = models.CharField(max_length=500)
created_at = models.DateTimeField(default=timezone.now)
customer = models.ForeignKey(CustomerDetails, on_delete=models.CASCADE)
delivery_signature = models.ImageField(
upload_to='delivery_selfie/', blank=True, default='')
delivered_at = models.DateTimeField(default=timezone.now)
dispensary = models.ForeignKey(Dispensary, on_delete=models.CASCADE)
driver = models.ForeignKey(
Driver, blank=True, null=True, on_delete=models.CASCADE)
picked_at = models.DateTimeField(default=timezone.now)
order_rated = models.BooleanField(default=False)
status = models.IntegerField(choices=STATUS_CHOICES)
total = models.FloatField()
def __str__(self):
return str(self.id)
Каждый раз, когда я пытаюсь вызвать API, я получаю эту ошибку.