【发布时间】:2018-10-10 09:04:09
【问题描述】:
我在 Django 中使用 rest 框架做一个小项目,但我已经到了不知道如何继续的地步。
在应用程序中,我的客户可以订购食物或饮料,然后将其添加到订单中。我有以下型号:
订单
order_id = models.AutoField(primary_key = True)
customer = models.ForeignKey(Customers, on_delete = None)
date = models.DateTimeField(auto_now_add=True)
模型 Customers 只是来自 User 模型的 OneToOneField。
食品订单
fake_id = models.AutoField(primary_key = True)
order_id = models.ForeignKey(Orders, on_delete = models.CASCADE)
food_id = models.ForeignKey(Food, on_delete = models.CASCADE)
quantity = models.IntegerField()
饮料订单
fake_id = models.AutoField(primary_key = True)
order_id = models.ForeignKey(Orders, on_delete = models.CASCADE)
drink_id = models.ForeignKey(Drink, on_delete = models.CASCADE)
quantity = models.IntegerField()
因此,考虑到我的模型,首先我需要创建一个订单,然后为订单中的每个项目创建一个食品订单或饮料订单。我遇到的问题是我什至无法创建订单。我创建了一个序列化程序和一个视图,用邮递员传递数据,什么也没有,我总是得到一个错误。
我的序列化器:
class OrdersSerializer(serializers.Serializer):
customer = UserSerializer()
date = serializers.DateTimeField()
class Meta:
model = Orders
def create(self, validated_data):
order = Orders.objects.create(**validated_data)
order.save()
return order
我的看法:
@api_view(['POST'])
def createOrder(request):
ser = OrdersSerializer(data=request.data)
if ser.is_valid():
ser.save()
return Response(ser.data, status=status.HTTP_201_CREATED)
else:
return Response(ser._errors, status=status.HTTP_400_BAD_REQUEST)
这是我要发送的有效负载:
{
"date": [{
"date": "2013-01-29T12:34:56.000000Z"
}],
"customer": {
"id": [{
"id":1
}]
}
}
这是我得到的回应:
{
"customerID": {
"id": [
"A valid integer is required."
]
},
"date": [
"Datetime has wrong format. Use one of these formats instead: YYYY-MM-DDThh:mm[:ss[.uuuuuu]][+HH:MM|-HH:MM|Z]."
]
}
我觉得这可能是有效载荷的问题,但我一直在努力让它工作但无济于事。
【问题讨论】:
标签: django python-3.x django-rest-framework django-serializer