我可以在 django 中为同一模型创建一个外键吗?

问题描述 投票:0回答:2

假设我有这个型号:

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

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

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

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

django django-models
2个回答
167
投票
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


22
投票

是的,你可以这样做,将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'
© www.soinside.com 2019 - 2024. All rights reserved.