如何在链接的Django REST模型中更新数据?
如何在链接的Django REST模型中更新数据
这是我的JSON
{
"doc_type": 1,
"warehouse": 4,
"date": "2022-06-09",
"number": 980,
"contragent": 2,
"comment": "testcom;mgment",
"items": [
{
"product": 7,
"buy_price": "168.00",
"sell_price": "500.00",
"quantity": 17
},
{
"product": 8,
"buy_price": "168.00",
"sell_price": "500.00",
"quantity": 17
}
]
}
,我无法更改“项目”字典中的数据 如果我只提交一个“产品”元素,将删除另一个元素吗?例如,如果三个会添加?
这是我目前的目前,记录是没有问题的,但我只能更新“托运诺特”模型
#serialisers.py
class ConsignmentNoteSerializer(serializers.ModelSerializer):
creator = serializers.HiddenField(default=serializers.CurrentUserDefault())
doc_type = serializers.IntegerField(read_only=True)
# contragent_detail = ContragentSerializer(source='contragent', read_only=True)
items = ConsignmentItemSerializer(many=True)
class Meta:
model = ConsignmentNote
fields = ['doc_type', "warehouse", 'date', 'number', 'contragent', 'comment', 'creator', 'items']
read_only_fields = ['id' ]
def create(self, validated_data):
items = validated_data.pop('items')
note = ConsignmentNote.objects.create(**validated_data, doc_type = 1)
for item in items:
product = item.pop('product')
item = ConsignmentItem.objects.create(consignmentnote=note, product=product ,**item)
return note
def update(self, instance, validated_data):
instance.date = validated_data.pop('date', instance.date)
instance.comment = validated_data.pop('comment', instance.comment)
return instance
How do I update data in a linked django rest model
Here is my json
{
"doc_type": 1,
"warehouse": 4,
"date": "2022-06-09",
"number": 980,
"contragent": 2,
"comment": "testcom;mgment",
"items": [
{
"product": 7,
"buy_price": "168.00",
"sell_price": "500.00",
"quantity": 17
},
{
"product": 8,
"buy_price": "168.00",
"sell_price": "500.00",
"quantity": 17
}
]
}
I can't change the data in the "items" dictionary
If I submit only one "product" element, will the other one be deleted? And if, for example, three, will it be added?
this is what I have at the moment, records are created without problems, but I can only update the "ConsignmentNote" model
#serialisers.py
class ConsignmentNoteSerializer(serializers.ModelSerializer):
creator = serializers.HiddenField(default=serializers.CurrentUserDefault())
doc_type = serializers.IntegerField(read_only=True)
# contragent_detail = ContragentSerializer(source='contragent', read_only=True)
items = ConsignmentItemSerializer(many=True)
class Meta:
model = ConsignmentNote
fields = ['doc_type', "warehouse", 'date', 'number', 'contragent', 'comment', 'creator', 'items']
read_only_fields = ['id' ]
def create(self, validated_data):
items = validated_data.pop('items')
note = ConsignmentNote.objects.create(**validated_data, doc_type = 1)
for item in items:
product = item.pop('product')
item = ConsignmentItem.objects.create(consignmentnote=note, product=product ,**item)
return note
def update(self, instance, validated_data):
instance.date = validated_data.pop('date', instance.date)
instance.comment = validated_data.pop('comment', instance.comment)
return instance
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论