Django - 涉及关系属性的多对多关系的数据库设计

时间:2013-08-20 14:20:46

标签: django python-2.7 orm

我有两张桌子:页面问题。 由于问题可以在多个页面上,并且页面有多个问题,因此这可以作为多对多关系。 到目前为止没有问题(我也遵循了这个例子https://docs.djangoproject.com/en/dev/topics/db/examples/many_to_many/

让我们说概念表结构如下所示:

网页:id_page(int)的

问题:id_question(int),text(string)

pageQuestions :id_page(int),id_question(int),ordinal_number(int) - 用于beak多对多的关系

我的问题是“ordinal_number”字段。这应该是在页面上排序问题。 由于每个页面上的问题都可以在不同的地方,因此该字段不属于问题表。

问:我怎么能在django模型中声明这个字段,因为我不应该使用pageQuestions表?

1 个答案:

答案 0 :(得分:3)

您绝对可以使用intermediary table pageQuestions来实现您的目标。

class Page:
   #attributes

class Questions:
   #attributes
   pages = models.ManyToManyField(through = 'PageQuestions', ...)

class PageQuestions:
    page = models.ForeignKey(Page)
    question = models.ForeignKey(Question)
    ordinal_number = models.IntegerField()

    class Meta:
        unique_together = (('page', 'question')) #optional

为了完整起见,添加了您在ManyToMany relationships

上找到的博客