1

シンプルな 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_related_instance経由でアクセスできることを意味しますmy_model_instance.my_field。ただし、この関連付けを解除したい:

>>> 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ますが、この場合は関連付けを解除したいだけです。ご覧のとおり、blankとの両方nullが に設定されていTrueます。

OneToOneFieldを空/空白/nullに設定するにはどうすればよいですか?

参考までに、私はdjango 1.4を使用しています。

4

1 に答える 1

0

モデルを作成するときに、後方関係を構築しないように django に指示できます。

class MyModel(models.Model):
    my_field = models.ForeignKey(MyRelatedModel, related_name='+')
于 2013-07-03T02:40:24.413 に答える