带外键的序列化器-GET和POST [英] Serializer with foreign key - GET and POST

查看:86
本文介绍了带外键的序列化器-GET和POST的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前有一个带有外键字段的模型序列化器。我希望将相关模型应用于序列化对象,而不仅仅是ID。我知道可以通过为相关模型创建序列化器并进行

I currently have a model serializer with a foreign key field. I would like the related model to a serialized object rather than just an ID. I know this is possible by creating a serializer for the related model and doing

related_field = RelatedFieldSerializer()

但是,在创建/更新主对象时如何处理?例如。我想创建一个主要对象的实例,但是相关字段将作为对象(而不是pk)发送,并且不会引用现有的外键,而是尝试创建一个新对象。

However, how do I handle the case when creating/updating occurs for the main object? E.g. I want to create an instance of the main object but the related field will get sent as an object (not a pk) and won't refer to the existing foreign key, it will try to create a new object instead.

希望这很有意义

推荐答案

您必须覆盖<序列化程序的code> create 和 update 方法。
create 方法如下所示:

You have to override the create and update methods of your serializer. The create method could look like this:

class MyModelSerializer(serializers.ModelSerializer):
    related_field = RelatedFieldSerializer()

    class Meta:
        model = MyModel
        fields = ('id', 'related_field')

    def create(self, validated_data):
        related_data = validated_data.pop('related_field')
        instance = MyModel.objects.create(**validated_data)
        RelatedModel.objects.create(my_model=instance, **related_data)
        return instance

更多有关信息,请参见有关可写嵌套表示形式的文档

For more information see the documentation about Writable nested representations

这篇关于带外键的序列化器-GET和POST的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆