2014-01-11 49 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