Django有两个带ForeginKey的模型,但其中一个没有定义

时间:2016-02-25 09:03:31

标签: django django-models

我有两个模型,每个都有ForeginKey到其他模式,当服务器尝试运行它时我遇到问题,因为它没有看到其他因为只有一个被定义。

有没有可能有这个并运行服务器没有错误?

Model.py:

class Task(models.Model):
    comment = models.ForeignKey(Comment, blank=True, null=True)
    deadline_date = models.DateField(null=True, blank=True)
    created_date = models.DateTimeField(auto_now_add=True, editable=False)
    finished_date = models.DateTimeField(null=True, blank=True)
    modified_date = models.DateTimeField(auto_now=True, editable=False)
    (...)

class Comment(models.Model):
    user = models.ForeignKey(User, on_delete=models.PROTECT, blank=True, null=True)
    task = models.ForeignKey(Task, on_delete=models.PROTECT, blank=True, null=True)
    (...)

2 个答案:

答案 0 :(得分:3)

您可以使用lazy relationships。 在Comment模型中:

class Comment(models.Model):
    task = models.ForeignKey('Task', on_delete=models.PROTECT, blank=True, null=True)
    ....

Task

class Task(models.Model):
    comment = models.ForeignKey('Comment', blank=True, null=True)
    .....

答案 1 :(得分:1)

是的,在将模型类作为字符串传递时使用替代语法。

somestuff = models.ForeignKey("myapp.SomeStuff", ...)

因此,在您的情况下,您需要做的就是添加一对“

comment = models.ForeignKey("Comment", blank=True, null=True)