Я пытаюсь вытащить из моего приложения через Django. Проблема в том, что когда я вызываю детали заказа через мои сериализаторы, я получаю эту ошибку:
TypeError at /api/customer/order/latest/
Object of type 'Product' is not JSON serializable
Request Method: GET
Request URL: http://localhost:8000/api/customer/order/latest/?access_token=XXXXXXXXXXXXXXXXXXXXXXXXXXXX
Django Version: 1.10
Exception Type: TypeError
Exception Value:
Object of type 'Product' is not JSON serializable
Я вытягиваю данные с этой модели:
class OrderDetail(models.Model):
order = models.ForeignKey(Order, related_name='order_details')
product_size = models.ForeignKey(ProductSize)
quantity = models.IntegerField()
sub_total = models.FloatField()
def __str__(self):
return str(self.id)
# references Prodcut and allows old code to work.
@property
def product(self):
return self.product_size.product
Вот что вытягивается:
'order_details': [OrderedDict([('id', 68),
('product_size', 44),
('quantity', 1),
('sub_total', 20.0),
('product', <Product: Bacon Burger - withDrink>)])],
'status': 'Your Order Is Being Picked Right Off The Plant!',
'total': 20.0}
request
<WSGIRequest: GET '/api/customer/order/latest/?access_token=XXXXXXXXXXXXXXXXXXXXXXXXXXXX'>
сериализаторы:
class OrderDetailSerializer(serializers.ModelSerializer):
class Meta:
model = OrderDetail
fields = ("id", "product_size", "quantity", "sub_total", "product")
class OrderSerializer(serializers.ModelSerializer):
customer = OrderCustomerSerializer()
driver = OrderDriverSerializer()
restaurant = OrderRestaurantSerializer()
order_details = OrderDetailSerializer(many = True)
status = serializers.ReadOnlyField(source= "get_status_display")
class Meta:
model = Order
fields = ("id", "customer", "restaurant", "driver", "order_details", "total", "status", "address")
Функция для деталей:
def customer_get_latest_order(request):
access_token = AccessToken.objects.get(token = request.GET.get("access_token"),
expires__gt = timezone.now())
customer = access_token.user.customer
order = OrderSerializer(Order.objects.filter(customer = customer).last()).data
return JsonResponse({"order": order})
Я не уверен, что нужно сделать.