Both seems to be generating integer NOT NULL UNIQUE REFERENCES
databaase columns.
Edit: My question is only about at the database level. (Not in the Django ORM.)
Both seems to be generating integer NOT NULL UNIQUE REFERENCES
databaase columns.
Edit: My question is only about at the database level. (Not in the Django ORM.)
Your answer is on the official documentation.
Basically, the difference is that when you try to access the ForeignKey from your object, you'll get another object, and not a queryset as you would in the ForeignKey.
From the docs:
class OneToOneField(othermodel[, parent_link=False, **options])
A one-to-one relationship. Conceptually, this is similar to a ForeignKey with unique=True, but the "reverse" side of the relation will directly return a single object.
ForeignKey
fields should be used for 1 to n relationships and OneToOneField
should be used to 1 to 1 relationships.
On database level, the foreign key is unique for OneToOneFields and that's not the case for ForeignKeys.