Django数据库模型设计 - 链接3个模型

时间:2017-11-28 18:14:49

标签: python django

我的项目是用Django编写的。我有一个学术论文的模型。

class Article(models.Model):
     title = models.CharField(max_length=300)
     abstract = models.TextField(blank=True)
     ...

对于文章可能响应的问题,我有另一个模型:

class Question(models.Model):
     question = models.CharField(max_length=300)
     article = models.ManyToManyField(Article)

文章可以通过以下三种方式之一回答问题:'是',' no'以及'证据不足'。但是同一篇文章可能会根据问题做出不同的反应。例如,第1条可能会回答“是”'问题1,' no'问题2和证据不足'问题3。

我正在努力解决如何将这些反应设计到我的模型中。我可以为下面的响应创建一个单独的模型:

class Response(models.Model):
     response = models.CharField(max_length=25)

然后用我的三个回复填充该模型('是',' no',''证据不足')然后在我的文章模型中添加一个字段回应如此:

response = models.ManyToManyField(Response)

但接下来我将如何链接文章对问题的回答?我如何告诉数据库第1条对问题1的回答是“是”,对问题2的回答是“不”'它对问题3的回答是“证据不足”?谢谢。

1 个答案:

答案 0 :(得分:0)

这应该有用,然后:

class Response(models.Model):
    # consider a different name for this field? Or not.
    response = models.CharField(max_length=25)
    article = models.ForeignKey(Article)
    question = models.ForeignKey(Question)

此外,如果Response.response确实有3个选项,那么请考虑将choices参数用于int,而不是CharField

请参阅here ->