2013-07-02 85 views
1

假設我有一個簡單的OneToOneField設置:如何將OneToOneField設置爲空/空/空?

class MyRelatedModel(models.Model): 
    pass 

class MyModel(models.Model): 
    my_field = OneToOneField(MyRelatedModel, blank=True, null=True) 

>>> my_related_instance = MyRelatedModel() 
>>> my_related_instance.save() 

>>> my_model_instance = MyModel(my_field=my_related_instance) 
>>> my_model_instance.save() 

這意味着我可以通過my_model_instance.my_field訪問my_related_instance。 不過,我想打破這種關聯:

>>> my_model_instance.my_field = None 
AttributeError: 'NoneType' object has no attribute 'myrelatedmodel_id' 

>>> setattr(my_model_instance, 'my_field', None) 
AttributeError: 'NoneType' object has no attribute 'myrelatedmodel_id' 

我知道我可以刪除相關my_related_instance,但在這種情況下,我只是想打破的關聯。如您所見,blanknull都設置爲True

如何將OneToOneField設置爲空/空白/空?

僅供參考,我使用的是django 1.4。

+0

邏輯聽起來不對。聽聽你即將完成的一些細節將會很有趣。也許有更好的解決方案 – Alp

+0

這可能聽起來錯了,但我不明白如何建立一對一的關係,但不能取消。 – NT3RP

回答

0

當您創建模型時,您可以要求django不要構建後向關係。

class MyModel(models.Model): 
    my_field = models.ForeignKey(MyRelatedModel, related_name='+')