83 votes

Puis-je créer une foreignKey sur le même modèle dans Django?

Supposons que j'ai ce modèle:

 class Task(models.Model):
    title = models.CharField()
 

Maintenant, j'aimerais qu'une tâche soit liée à une autre tâche. Alors j'ai voulu faire ceci:

 class Task(models.Model):
    title = models.CharField()
    relates_to = ForeignKey(Task)
 

Cependant, j'ai une erreur qui dit que Task est défini par note. Est-ce "légal", sinon, comment devrais-je faire quelque chose de semblable?

166voto

Yuji 'Tomita' Tomita Points 46106
 class Task(models.Model):
    title = models.CharField()
    relates_to = models.ForeignKey('self')
 

https://docs.djangoproject.com/en/dev/ref/models/fields/#foreignkey

22voto

Oui, vous pouvez le faire, faites de l'attribut ForeignKey une chaîne:

 class Task(models.Model):
    title = models.CharField()
    relates_to = ForeignKey('Task')
 

En profondeur, vous pouvez également référencer le modèle d'une application en utilisant la notation par points, par exemple:

 class Task(models.Model):
    title = models.CharField()
    relates_to = ForeignKey('<app_name>.Task')  # e.g. 'auth.User'
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X