2016-06-14 121 views
-2

我:OneToOneFields; POST請求都返回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的第一部分,我怎麼能挽救第二部分呢?

更具體地說,發送到api/things的請求返回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

所以我計算出來,我需要設置 'other_thing' 作爲像這樣一個read_only_field;

class ThingSerializer(serializers.ModelSerializer): 

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

這使Django的從期待它在有效載荷信息何時進來,但仍然會發送過來當請求的事情。

相關問題