На уровне базы данных, в чем разница между [Django] OneToOneFiled и ForeignKey (Model, unique = True) - PullRequest
1 голос
/ 14 января 2010

Кажется, что оба генерируют integer NOT NULL UNIQUE REFERENCES столбцы базы данных.

Edit: мой вопрос только о на уровне базы данных. (Нет в Django ORM.)

Ответы [ 2 ]

1 голос
/ 14 января 2010
Поля

ForeignKey должны использоваться для отношений от 1 до n, а OneToOneField - для отношений от 1 до 1.

На уровне базы данных внешний ключ уникален для OneToOneFields, а для ForeignKeys это не так.

1 голос
/ 14 января 2010

Ваш ответ на официальной документации .

По сути, разница в том, что при попытке доступа к ForeignKey из вашего объекта вы получите другой объект, а не набор запросов, как в ForeignKey.

Из документов:

class OneToOneField (othermodel [, parent_link = False, ** options])

Отношения один-к-одному. Концептуально это похоже на ForeignKey с unique = True, но «обратная» сторона отношения будет напрямую возвращать один объект.

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