Django项目/应用程序布局 - 正确的方式?
问题的原因是有人误解了Django项目和应用程序之间的关系。他们认为每个功能都需要一个单独的应用程序,而实际上这些功能应该组合在一起定义一个应用程序。如果以后需要添加另一个使用相同数据库和设置但与当前应用程序没有太多共享的功能,那将是同一个项目中的另一个应用程序。
解决方法是将所有相关功能组合在一个应用程序中。这样可以更好地组织代码,并且可以方便地共享数据库和设置。
如果`Bookmark`和`Tag`之间有多对多的关系,并且需要在该关系中添加额外的字段(不仅仅是相关对象的`id`),可以使用`ManyToManyField`并设置`through`表。
class Bookmark(models.Model): # whatever fields you need on Bookmark tags = models.ManyToManyField('Tag', through = 'BookmarkTag') class Tag(models.Model): # whatever fields you need on Tag pass class BookmarkTag(models.Model): bookmark = models.ForeignKey(Bookmark) tag = models.ForeignKey(Tag) # whatever additional fields you need on the relationship
更多信息请参考Django文档中关于“Extra fields on many-to-many relationships”的部分。