2013-08-20 184 views
0

我有兩個表格:頁面問題。 由於一個問題可以在多個頁面上,並且一個頁面有多個問題,這可以作爲多對多的關係。 沒有問題至今(我也跟着這個例子https://docs.djangoproject.com/en/dev/topics/db/examples/many_to_many/Django - 涉及屬性關係的多對多關係的數據庫設計

讓我們說,概念表的結構是這樣的:

:id_page(INT)

問題:id_question( int),text(string)

pageQuestions:id_page(int),id_question(int),ordinal_number(int) - 用於將多對多關係

我的問題是「ordinal_number」字段。這應該是爲了在頁面上排列問題。 由於在每個頁面上的問題可以在不同的地方,這個字段不屬於問題表。

問:如何在django模型中聲明此字段,因爲我不應該使用pageQuestions表?

+1

發現博客? – karthikr

+0

好吧,在官方的例子中,多對多的關係並沒有使用(可見的)表格,我假設我不應該添加一個:我錯了嗎? – NiCU

+1

好吧。你能行的。它被稱爲[通過表](https://docs.djangoproject.com/en/dev/topics/db/models/#extra-fields-on-many-to-many-relationships)。非常廣泛地使用 – karthikr

回答

3

您肯定可以使用intermediary tablepageQuestions來實現您的目標。

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 

爲了完整起見,增加了你爲什麼不應該使用pageQuestions你ManyToMany relationships