Django rest框架中的嵌套对象
我想为订购物品设计解决方案。我有创建订单的端点,但我需要在订单中有items对象。让我给你看看代码Django rest框架中的嵌套对象,django,django-models,django-rest-framework,django-forms,django-views,Django,Django Models,Django Rest Framework,Django Forms,Django Views,我想为订购物品设计解决方案。我有创建订单的端点,但我需要在订单中有items对象。让我给你看看代码 class ItemModel(models.Model): name=models.CharField(最大长度=50) price=models.FloatField() 自由裁量=型号。CharField(最大长度=500) available=models.BooleanField(默认值=True) 类OrderModel(models.Model): phone=models.Char
class ItemModel(models.Model):
name=models.CharField(最大长度=50)
price=models.FloatField()
自由裁量=型号。CharField(最大长度=500)
available=models.BooleanField(默认值=True)
类OrderModel(models.Model):
phone=models.CharField(最大长度=20)
delevary_time=models.DateTimeField()
类别模型(models.Model):
order=models.ForeignKey(OrderModel,on_delete=models.CASCADE,related_name='order\m')
item=models.ForeignKey(ItemModel,on_delete=models.CASCADE,related_name='item')
我需要为我创建订单的端点。她知道我做了什么
类序列化程序(serializers.ModelSerializer):
类元:
模型
排除=[‘顺序’,]
深度=2
类OrderSerializer(serializers.ModelSerializer):
cart=serializers.SerializerMethodField()
类元:
模型=订单模型
字段=['phone'、'state'、'delevalu_time'、'cart']
def获取车(自身、obj):
cart=CartModel.objects.filter(订单号=obj.id)
serializer=CartSerializer(cart,many=True)
返回序列化程序.data
这就是终点
router.register('order', OrderViewSet, 'api-order')
{
"phone": 124997988698,
"delevary_time": "2020-07-17T19:34:00",
"cart": [
{
"item": 1
},
{
"item": 2
}
]
}
当我发布json时,它不保存购物车,只保存订单电话和删除时间。如何同时保存购物车类CartSerializer(serializers.ModelSerializer):
类元:
模型
排除=[‘顺序’,]
深度=2
类OrderSerializer(serializers.ModelSerializer):
order_m=CartSerializer(many=True)#添加此
类元:
模型=订单模型
字段=['phone'、'state'、'delevaluy\u time'、'order\u m']
def创建(自我验证的_数据):
购物车数据=已验证的数据.pop('order\u m')
order=OrderModel.objects.create(**已验证的_数据)
对于cart_数据中的c:
CartModel.objects.create(order=order,**c)
退货单
最好对外键使用嵌套序列化程序,但不要使用SerializerMethodField
,因为它是只读的。如何操作?你能在这里给我一个cluefull示例吗->它给我这个错误python最初的异常文本是:“OrderModel”对象没有属性“cart”代码>我发现它保存了模型,但Get请求中存在问题。我不知道怎么走!!。。此外,在Post请求中,它保存模型并显示错误消息