【发布时间】:2020-09-30 19:50:01
【问题描述】:
我有以下模型和序列化器:
class Order(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='orders')
orderType = models.IntegerField()
justification = models.CharField("Order justification", max_length=150, default=None, blank=True, null=True)
date = models.DateTimeField("Order date")
status = OrderType()
class Item(models.Model):
order = models.ForeignKey(Order, on_delete=models.CASCADE, related_name='items')
product = models.ForeignKey(Product, on_delete=models.CASCADE, related_name='itemsProduct')
quantity = models.IntegerField("Quantity sale")
price = models.DecimalField("Sale price", max_digits=15, decimal_places=2)
class OrderItemSerializer(serializers.ModelSerializer):
items = ItemSerializer()
class Meta:
model = Order
depth = 0
fields = ["user", "orderType", "justification", "date", "items"]
我想用这样的 json 实现一个帖子:
{
"user": 10,
"orderType": 1,
"justification": "",
"date": "2020-09-30T19:11:55.327Z",
"items": [{
"quantity": 1,
"price": 1,
"order": (need to be the order that i'm posting)
"product": 1
},
{
"quantity": 1,
"price": 12,
"order": (need to be the order that i'm posting)
"product": 3
}]
}
但是使用我的序列化器,帖子是:
{
"user": 10,
"orderType": 1,
"justification": "",
"date": "2020-09-30T19:11:55.327Z",
"items":{
"quantity": 1,
"price": 1,
"order": 0,
"product": 1
}
}
是否有办法为帖子插入许多项目并自动设置 item.order 字段(如第一个 json)做一个序列化程序?
#编辑 1
为了更清楚在“many=True”的解决方案之后我需要什么...... 目前,如果我想发布一个订单和一个项目,我需要先用这样的 json 发布一个订单:
{
"user": 10,
"orderType": 1,
"justification": "",
"date": "2020-09-30T19:11:55.327Z"
}
然后我需要用这样的 json 为项目发布一个帖子:
{
"quantity": 1,
"price": 1,
"order": 1,
"product": 1
}
其中“订单”字段是 django 自动生成并在我的示例中的第一个帖子之后返回的订单的 pk。
如果我事先不知道 Ordem 的主键,我如何仅使用一个包含许多项的 Ordem 序列化程序来发布帖子? 我相信在我的序列化程序中我需要覆盖“创建”来为我的项目设置订单主键,但我不知道如何。
基本上,我需要我的帖子使用以下 json(项目中没有“订单”字段,因为该值是在订单创建中为 django 生成的):
{
"user": 10,
"orderType": 1,
"justification": "",
"date": "2020-09-30T19:11:55.327Z",
"items": [{
"quantity": 1,
"price": 1,
"product": 1
},
{
"quantity": 1,
"price": 12,
"product": 3
}]
}
【问题讨论】:
标签: django django-rest-framework django-views django-serializer