Как мне очистить отношения один к одному в модели Django? - PullRequest
2 голосов
/ 04 января 2010

Я использую отношения один к одному между двумя моделями, и мне нужно уметь очистить эти отношения. Однако я не могу найти способ очистить (очистить (), удалить () и т. Д.), Чтобы удалить эту связь, и администратор Django не будет выполнять эту операцию. У кого-нибудь есть опыт решения этой проблемы? Я думаю, что мне, возможно, придется пропустить одно к одному полю и использовать один ко многим с уникальным = true, установленным на поле.

Редактировать: я должен был упомянуть. У меня есть null = True, установленный на поле, но это не имеет значения.

Ответы [ 2 ]

8 голосов
/ 04 января 2010

просто установите его в None и сохраните: -)

my_instance.my_one_to_one_fieldname = None
my_instance.save()

edit: Кстати, это работает только для модели, для которой вы определили OneToOneField. Я не уверен, как бы вы поступили в обратном направлении, за исключением:

my_related_instance.othermodel.my_one_to_one_fieldname = None
my_related_instance.othermodel.save()

Но это то же самое, что и:

my_instance = my_related_instance.othermodel

и затем продолжение, как в первом примере.

0 голосов
/ 04 января 2010

Если для поля указано null=True, вы можете сделать Instance.<foreignmodel>_set.clear() Возможно, я отключен на этом ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...