Dans Django, comment faire d'un modèle de référence à lui-même?
Supposons que nous avons la classe Employee
. Je veux avoir un champ qui fait référence à une autre instance de la même classe.
Comment écrire cela? Comment le code suivant?
ref_employee= models.ForeignKey('self',null=True,blank=True)
Vous devez vous connecter pour publier un commentaire.
http://docs.djangoproject.com/en/dev/ref/models/fields/#foreignkey
Donc, vous l'avez droit. Il est généralement plus rapide de déterminer si le code à faire ce que vous voulez, en l'exécutant 🙂
Je crois que vous pouvez même exclure le nom de l'application qui ressemblerait à:
Vous pouvez faire référence à d'autres modèles par son nom (à l'aide d'une chaîne de caractères, y compris
package), plutôt que par la classe:
Donc, si votre
Employee
classe est dans lahr
application:models.ForeignKey('hr.Employee', null=True, blank=True)
)Une contrainte forçant
id
etref_employee_id
à séparer les valeurs en dehors du champ d'application de l'ORM de Django. Vous devrez ajouter a dit de contrainte au niveau base de données via SQL dans syncdb ou manuellement.