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

Dan*_*nna 1 django django-models

我正在Django中创建一个简单的项目,以进一步了解它和Python,基本上只是存储书签和标签,两者都有视图,并且将有3个模型:
Tag
Bookmark
Bookmark_Tag(关系)

我在django文档中阅读了"Projects vs Apps"面板,但我仍然不确定如何进行布局,现在它只在一个书签应用程序中,如果有一个单独的书签应用程序和一个单独的应用程序的标签,如果是这样,关系的模型在哪里生活?

谢谢!

agf*_*agf 5

不,您不需要为每个应用单独的应用程序.它们密切相关,听起来像是在一起定义你的应用程序,而不是分开.如果以后,您为站点添加了另一个使用相同数据库和设置但与当前应用程序没有多少共享功能的功能,那将是同一项目中的另一个应用程序.

请参阅Django项目models.py与app models.pyDjango:本网站上的"项目"与"应用"以及Django提示:为更多指南制定应用程序.

如果Bookmarks和Tags具有多对多关系,并且您需要向该关系添加额外的字段(除了id相关对象的s之外),您可以使用a 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
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅有关多对多关系的额外字段的Django文档.