W rzeczywistości istnieje różnica w tym, gdzie umieścić pole jeden-do-jednego, ponieważ usuwanie zachowuje się inaczej. Podczas usuwania obiektu wszelkie inne obiekty, które mają relacje jeden-do-jednego odwołujące się do tego obiektu, zostaną usunięte. Jeśli zamiast tego usuniesz obiekt zawierający jedno do jednego (tzn. Odwoła się do innych obiektów, ale inne obiekty nie odwołują się do niego), żadne inne obiekty nie zostaną usunięte.
Na przykład:
class A(models.Model):
pass
class B(models.Model):
a = models.OneToOneField(A)
Jeśli usuniesz, domyślnie B zostaną usunięte, jak również (choć można to zmienić poprzez modyfikację on_delete argumentu na OneToOneField Podobnie jak ForeignKey). Usunięcie B nie spowoduje usunięcia A (chociaż możesz zmienić to zachowanie przez przesłonięcie metody delete() na B).
Powrót do początkowego pytania ma-a przeciw a-a, jeśli A ma B, B powinno mieć jedno-do-jednego pole (B powinno istnieć tylko jeśli A istnieje, ale A może istnieć bez B).
Cóż, to jest pytanie.Jak mogę się dowiedzieć, co jest bardziej sensowne? Czasami nie ma absolutnie żadnej różnicy i oba sposoby są równie możliwe. – aemdy
W takich przypadkach jest to całkowicie zależne od Ciebie. Nie sądzę, że istnieje ostateczna odpowiedź. – Brandon