我对Web应用程序和数据库等内容比较陌生,所以这可能是个愚蠢的问题。我想创建一个模型(“CategoryModel”),其中包含一个字段,指向该模型另一个实例(父实例)的主键ID。
class CategoryModel(models.Model):
parent = models.ForeignKey(CategoryModel)
我该如何做到这一点?谢谢!
我对Web应用程序和数据库等内容比较陌生,所以这可能是个愚蠢的问题。我想创建一个模型(“CategoryModel”),其中包含一个字段,指向该模型另一个实例(父实例)的主键ID。
class CategoryModel(models.Model):
parent = models.ForeignKey(CategoryModel)
我该如何做到这一点?谢谢!
您可以将模型的名称作为字符串传递给ForeignKey,它会自动处理。
因此:
parent = models.ForeignKey("CategoryModel")
或者您可以使用字符串"self"
parent = models.ForeignKey("self")
您可以使用字符串"self"来表示自我引用。
class CategoryModel(models.Model):
parent = models.ForeignKey('self')
https://docs.djangoproject.com/zh-hans/3.2/ref/models/fields/#foreignkey
你还需要设置 null=True
和 blank=True
class CategoryModel(models.Model):
parent = models.ForeignKey("self", on_delete=models.CASCADE, null=True, blank=True)
null=True
,允许在数据库中为空
blank=True
,允许在表单验证中为空
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)
或者
class Employee(models.Model):
manager = models.ForeignKey("app.Employee", on_delete=models.CASCADE)
https://stackabuse.com/recursive-model-relationships-in-django/