2014-01-11 48 views
0

我正試圖編寫一個簡單的Django應用程序,用戶可以發佈文章,其他用戶可以訂閱文章。我處理了大部分數據庫關係,但是我正在努力的是針對主題類型,這是一個多選表單字段。用戶訂閱的數據庫模型

我有一個「主題」表與各種主題類型,創建文章時,您可以選擇多個主題文章相關,但我只希望有1條目在「文章」表中。我將如何建模,這樣當我創建一篇文章時,它只是一個條目,但我仍然可以將其與作者可能選擇的多個主題相關聯?

回答

1

您正在尋找ManyToManyField,這是Django創建N-N表格的方式。

class Topic(models.Model): 
    name = ... 

class Article(models.Model): 
    content = ... 
    topics = models.ManyToManyField(Topic) 

在後臺,Django會創建一個新錶鏈接主題和文章,因爲你不能有一個N-N表中的SQL。

+0

謝謝。它沒有在文章表中添加額外的列。它是否應該用關鍵文章的主鍵? – user3184033

+0

不,你不應該有任何SQL的列表。正如我寫的,在後臺,它會創建一個你不會看到管理N-N關係的新表。這只是一個鏈接表。您可以閱讀此[SO帖子](http://stackoverflow.com/questions/183742/how-do-you-deal-with-m-n-relationships-in-a-relational-database)以獲取更多信息。 – Nil