2016-06-14 5 views
-2

を返す:OneToOneFields;ポスト要求はすべて、私が持っている今、400

class Thing(BaseModel): 
    #doesn't matter 

class OtherThing(BaseModel): 
    thing = models.OneToOneField(Thing, 
    related_name = 'other_thing', 
    null   = True, 
    blank  = True, 
) 

今私のDjangoのバックエンドは文句を言わないother_thingがペイロードにnullに設定されている間、私は事のモデルを持続することができます。概念的に私には意味をなさないが、もし私が1-2-1の最初の部分を保存することができないなら、どうすれば2番目の節約できますか?

具体的には、api /物事への投稿要求は400を返します。 { "other_thing":[ "このフィールドはヌルではないかもしれない"]}

シリアライザ:

class ThingSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = Thing 
     fields = ('id', 'name', 'other_thing') 

class OtherThingSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = OtherThing 
     fields = ('id', 'name', 'thing') 
+1

APIフレームワークを使用していますか?あなたのAPIコードはどのように見えますか?情報が不十分です。 –

+0

実際には何もありません。保存時にfull_cleanを呼び出し、__str__メソッドを提供します。それはForeignKeyだったときに働いていたし、それがOneToOneFieldに変換されたときに動作を停止したので、1-2-1の本質的なものがあれば疑問です。 –

+1

シリアライザを表示 – hsfzxjy

答えて

1

をだから、私はそうのようなread_only_fieldとして 'other_thing' を設定するのに必要な、それを考え出しました。

class ThingSerializer(serializers.ModelSerializer): 

class Meta: 
    model = Thing 
    fields = ('id', 'name', 'other_thing') 
    read_only_field = ('other_thing',) 

これはポストで来たときにペイロードにそれを期待からジャンゴを保持しますが、事が要求されたとき、まだそれを上に送信されます。

関連する問題