我有一个内部装有物品的托盘。我需要根据外键值为货盘分配一个特定的编号(但这还没有在代码中)。
使用邮递员,当我使用json正文进行发布时;
哪种方法是在创建之前添加数据的正确方法?这是序列化器:
class ContentSerializer(serializers.ModelSerializer):
class Meta:
model = models.Content
fields = ('id', 'quantity', 'kilograms', 'container')
class PalletSerializer(serializers.ModelSerializer):
contents = ContentSerializer(many=True)
class Meta:
model = models.Pallet
fields = ('id', 'number', 'receipt_waybill', 'client', 'contents',)
def create(self, validated_data):
contents_data = validated_data.pop('contents')
number = 123456
pallet = models.Pallet.objects.create(number=number, **validated_data)
for content_data in contents_data:
specifications_data = content_data.pop('specifications')
instance = models.Content.objects.create(pallet=pallet, **content_data)
instance.specifications.set(specifications_data)
return pallet
答案 0 :(得分:1)
您可以将number
字段设置为只读。您可以通过在number = serializers.IntegerField(read_only=True)
中使用PalletSerializer
手动定义字段,或在序列化器的read_only_fields = ('number',)
中定义class Meta
来实现。