Answers:
您可以将模型的名称作为字符串传递给ForeignKey,它将做正确的事情。
所以:
parent = models.ForeignKey("CategoryModel")
或者您可以使用字符串“ self”
parent = models.ForeignKey("self")
您可以使用字符串“ self”表示自我参考。
class CategoryModel(models.Model):
parent = models.ForeignKey('self')
https://docs.djangoproject.com/zh-CN/dev/ref/models/fields/#foreignkey
self
定义模型属性时不存在。如果将该属性定义为__init__()
或另一方法的一部分,则它将self
始终是Python类的任何实例方法的第一个位置参数。
https://books.agiliq.com/projects/django-orm-cookbook/zh-CN/latest/self_fk.html
class Employee(models.Model):
manager = models.ForeignKey('self', on_delete=models.CASCADE)
要么
class Employee(models.Model):
manager = models.ForeignKey("app.Employee", on_delete=models.CASCADE)
https://stackabuse.com/recursive-model-relationships-in-django/
parent
代替parentId
,因为my_category_model.parent
它将是的实例CategoryModel
。Django将自动创建一个成员parent_id
,该成员将成为相关模型的主键。