2010-01-14 3 views

Répondre

1

ForeignKey champs doivent être utilisés pour les relations 1 à n et OneToOneField doit être utilisé pour 1 à 1 relations. Au niveau de la base de données, la clé étrangère est unique pour OneToOneFields et ce n'est pas le cas pour ForeignKeys.

+0

Avec 'ForeignKey (Model, unique = True)' le FK est évidemment unique, alors dites-vous qu'il n'y a pas de diff? – agiliq

+0

Je suis désolé, je n'avais pas remarqué cela sur le titre de la question. Je pense qu'il n'y a pas de différence en effet. – jbochi

1

Votre réponse est sur le documentation officiel. En fait, la différence est que lorsque vous essayez d'accéder à ForeignKey à partir de votre objet, vous obtenez un autre objet, et pas un jeu de requête comme dans ForeignKey.

De la documentation:

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

Un one-to-one. Conceptuellement, ceci est similaire à un ForeignKey avec unique = True, mais le côté "reverse" de la relation retournera directement un seul objet.

+0

Flavio: Merci pour le lien. Cependant, ma question est: Y at-il une différence ** au niveau de la base de données? – agiliq

+0

@uswaretech dans la mesure où la documentation va, il n'y a pas de différence dans le niveau de la base de données. –

Questions connexes