Je suis un peu novice dans les applications Web et les bases de données en général, alors c'est peut-être une question idiote. Je veux créer un modèle ("CategoryModel") avec un champ qui pointe vers l'identifiant primaire d'une autre instance du modèle (son parent).
class CategoryModel(models.Model):
parentId = models.ForeignKey(CategoryModel)
Comment puis-je faire cela? Merci!
Vous pouvez transmettre le nom d'un modèle sous forme de chaîne à ForeignKey et il agira comme il convient.
Alors:
parentId = models.ForeignKey("CategoryModel")
Ou vous pouvez utiliser la chaîne "self"
parentId = models.ForeignKey("self")
Vous pouvez utiliser la chaîne 'self' pour indiquer une auto-référence.
class CategoryModel(models.Model):
parentId = models.ForeignKey('self')
https://docs.djangoproject.com/en/dev/ref/models/fields/#foreignkey
https://books.agiliq.com/projects/Django-orm-cookbook/en/latest/self_fk.html
class Employee(models.Model):
manager = models.ForeignKey('self', on_delete=models.CASCADE)
OR
class Employee(models.Model):
manager = models.ForeignKey("app.Employee", on_delete=models.CASCADE)
https://stackabuse.com/recursive-model-relationships-in-Django/