2010-01-04 4 views
1

J'utilise une relation un à un entre deux modèles et je dois être en mesure d'effacer cette relation. Cependant, je ne peux pas trouver un moyen d'effacer (clear(), remove(), etc ...) pour supprimer cette relation, et l'administrateur Django n'effectuera pas cette opération. Quelqu'un at-il de l'expérience avec ce problème? Je pense que je devrais passer le champ un à un et utiliser un à plusieurs avec unique = true sur le terrain.Comment faire pour effacer une relation un à un dans un modèle Django?

Modifier: J'aurais dû le mentionner. J'ai null = True sur le terrain, mais cela ne fait pas de différence.

Répondre

7

situé juste à None et économisez :-)

my_instance.my_one_to_one_fieldname = None 
my_instance.save() 

modifier: Par ailleurs, cela ne fonctionne que pour le modèle que vous avez défini OneToOneField. Je ne sais pas comment vous le faire de l'arrière, à l'exception:

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

Mais c'est la même chose que faire:

my_instance = my_related_instance.othermodel 

et continue alors comme le premier exemple.

0

Si null=True est spécifié pour le champ que vous devriez être en mesure de faire une Instance.<foreignmodel>_set.clear() je pourrais être au large sur ce ..

+0

Oui, je l'ai fait, j'aurais dû le mentionner. Cela ne fait pas de différence. Vous n'êtes pas non plus défini comme objet (Instance. _set) pour référencer avec une relation un à un. – stinkypyper

Questions connexes