Both seems to be generating integer NOT NULL UNIQUE REFERENCES
databaase columns.
Edit: My question is only about at the database level.开发者_Go百科 (Not in the Django ORM.)
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.
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.
精彩评论