Кажется, что оба генерируют integer NOT NULL UNIQUE REFERENCES столбцы базы данных.
integer NOT NULL UNIQUE REFERENCES
Edit: мой вопрос только о на уровне базы данных. (Нет в Django ORM.)
ForeignKey должны использоваться для отношений от 1 до n, а OneToOneField - для отношений от 1 до 1.
ForeignKey
OneToOneField
На уровне базы данных внешний ключ уникален для OneToOneFields, а для ForeignKeys это не так.
Ваш ответ на официальной документации .
По сути, разница в том, что при попытке доступа к ForeignKey из вашего объекта вы получите другой объект, а не набор запросов, как в ForeignKey.
Из документов:
class OneToOneField (othermodel [, parent_link = False, ** options]) Отношения один-к-одному. Концептуально это похоже на ForeignKey с unique = True, но «обратная» сторона отношения будет напрямую возвращать один объект.
class OneToOneField (othermodel [, parent_link = False, ** options])
Отношения один-к-одному. Концептуально это похоже на ForeignKey с unique = True, но «обратная» сторона отношения будет напрямую возвращать один объект.