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

时间:2012-06-26 18:57:28

标签: django django-models

假设我有这个模型:

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

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

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

但是我有一个错误,指出Task是注释定义的。 这是“合法的”,如果不是,我该怎么办呢?

2 个答案:

答案 0 :(得分:108)

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

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

答案 1 :(得分:15)

是的,你可以这样做,将ForeignKey属性设为字符串:

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

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

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