我可以在django中为同一个模型制作一个foreignKey吗?

Nun*_*147 56 django django-models

假设我有这个模型:

class Task(models.Model):
    title = models.CharField()
Run Code Online (Sandbox Code Playgroud)

现在我希望任务可能与另一项任务有关.所以我想这样做:

class Task(models.Model):
    title = models.CharField()
    relates_to = ForeignKey(Task)
Run Code Online (Sandbox Code Playgroud)

但是我有一个错误,指出任务是注释定义的.这是"合法的",如果不是,我该怎么办呢?

Yuj*_*ita 111

class Task(models.Model):
    title = models.CharField()
    relates_to = models.ForeignKey('self')
Run Code Online (Sandbox Code Playgroud)

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

  • 刚好快几秒钟:-) (2认同)

Hed*_*ide 16

是的,你可以这样做,使ForeignKey属性成为一个字符串:

class Task(models.Model):
    title = models.CharField()
    relates_to = ForeignKey(to='Task')
Run Code Online (Sandbox Code Playgroud)

在深度上,您还可以使用点符号交叉引用应用程序的模型,例如

class Task(models.Model):
    title = models.CharField()
    relates_to = ForeignKey(to='<app_name>.Task')  # e.g. 'auth.User'
Run Code Online (Sandbox Code Playgroud)