Django项目/应用程序布局 - 正确的方式?

29 浏览
0 Comments

Django项目/应用程序布局 - 正确的方式?

我正在使用Django创建一个简单的项目,以进一步了解它和Python,主要是用来存储书签和标签,两者都有视图,总共有3个模型:

标签

书签

书签标签(关系)

我在Django文档中阅读了"项目 vs 应用"的部分,但我仍然不确定如何布局,目前它们都在一个书签应用程序中,应该为书签和标签分别创建一个应用程序,如果是这样的话,关系模型应该放在哪里?

谢谢!

0
0 Comments

问题的原因是有人误解了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”的部分。

0