2017-02-02 13 views
0

私は現在、外部キーフィールドを持つモデルシリアライザを持っています。私は関連するモデルを単なるIDではなく直列化されたオブジェクトにしたいと思います。私が作成/更新が主な目的のために発生したとき、私はケースを扱うか、どのように関連したモデルのためのシリアライザを作成し、しかし外部キーを持つシリアライザ - GETとPOST

related_field = RelatedFieldSerializer() 

をすることによってこれが可能である知っていますか?例えば。私はメインオブジェクトのインスタンスを作成したいが、関連フィールドはオブジェクト(pkではない)として送られ、既存の外部キーを参照しません。代わりに新しいオブジェクトを作成しようとします。

希望これは、あなたのシリアライザのcreateupdateメソッドをオーバーライドする必要が意味

答えて

1

になります。書き込み可能なネストされたシリアル化についてWritable nested representations

+0

私はすでにオーバーライドされているが(作成のマニュアルを参照してください詳細については

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 

)、更新(): create方法は、次のようになります。新しいRelatedModelインスタンスを作成する必要はありません。既存のインスタンスを参照したいと思います。私はMyModel.related_field = RelatedModel.objects.get(pk = some_id)のようなことをしたい。 – zubhav

関連する問題