74

假设我有这个模型:

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

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

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

但是我有一个错误,指出任务是注释定义的。这是否“合法”,如果不是,我应该如何做类似的事情?

4

2 回答 2

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

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

于 2012-06-26T18:59:55.213 回答
21

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

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

深入地讲,您还可以使用点符号交叉引用应用程序的模型,例如

class Task(models.Model):
    title = models.CharField()
    relates_to = ForeignKey(to='<app_name>.Task')  # e.g. 'auth.User'
于 2012-06-26T19:00:18.630 回答