我正在Django中创建一个简单的项目,以进一步了解它和Python,基本上只是存储书签和标签,两者都有视图,并且将有3个模型:
标签
收藏
Bookmark_Tag(人际关系)
我在django文档中阅读了“Projects vs Apps”面板,但我仍然不确定如何进行布局,现在它只在一个书签应用程序中,应该有一个单独的书签应用程序和标签的单独应用程序,如果是这样,关系的模型在哪里生活?
谢谢!
答案 0 :(得分:5)
不,您不需要为每个应用单独使用。它们密切相关,听起来像是在一起定义你的应用程序,而不是分开。如果以后,您为站点添加了另一个使用相同数据库和设置但与当前应用程序没有多少共享的功能,那将是同一项目中的另一个应用程序。
请参阅本网站上的Django project models.py versus app models.py和Django: "projects" vs "apps"以及Django tips: laying out an application了解更多指南。
如果Bookmark
和Tag
具有多对多关系,并且您需要为该关系添加额外字段(不仅仅是相关的id
s对象)您可以使用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
有关详细信息,请参阅Extra fields on many-to-many relationships上的Django文档。