假设我有这个型号:
class Task(models.Model):
title = models.CharField()
现在我希望一项任务可能与另一项任务相关。所以我想这样做:
class Task(models.Model):
title = models.CharField()
relates_to = ForeignKey(Task)
但是我有一个错误,指出任务是注释定义的。 这是“合法的”吗?如果不合法,我应该怎么做类似的事情?
class Task(models.Model):
title = models.CharField()
relates_to = models.ForeignKey('self', on_delete=models.CASCADE)
https://docs.djangoproject.com/en/dev/ref/models/fields/#foreignkey
是的,你可以这样做,将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'