我正在创建一个电影/电视相关网站:电影被称为“标题”,所以我有一个标题应用程序来处理那些操作。但是,标题也可以有流派和演员。
组织这个的最佳方法是什么?目前我有:
apps/titles (contains Title, and TitleGenre classes)
apps/titles/genres (contains Genre model class)
这是最佳解决方案吗?甚至可能需要使用titles
的子应用,对于genres
类似的子应用是否会在标题应用中?在我深入研究之前,我显然希望开始最好的方式。
答案 0 :(得分:3)
我会沿着这些方向做点什么:
MyProject/
|- films/
|- __init__.py
|- urls.py
|- models/
|- __init__.py
|- genre.py
|- actor.py
|- title.py
|- actorrole.py //M2M through with actors and their roles in specific titles
|- admin/
|- __init__.py
|- genre.py
|- actor.py
|- title.py
|- views/
|- __init__.py
|- someview.py
|- myproject/
|- __init__.py
|- urls.py
|- wsgi.py
|- settings/
|- __init__.py
|- production.py
|- staging.py
|- local.py
3或4个型号并不是很多,我会把它传播到几个应用程序中。但要进行组织,请将模型和管理类保存在单独的文件中,然后将其导入文件夹的__init__.py
确保在内部Meta类中包含app_name。
class Genre(models.Model):
...
class Meta:
app_label = _(u'films') #app's name
...
确保所有FK都作为字符串而不是类传递(有助于避免循环依赖)
title = models.ForeignKey("films.Title")
以正确的顺序导入films/models/__init__.py
,以便不拥有循环代码。
from films.models.genre import Genre
from films.models.actor import Actor
from films.models.title import Title
from films.models.actorrole import ActorRole
在films/admin/__init__.py
注册每个管理类
from django.contrib import admin
from lottery.models import Genre, Actor, Title
from lottery.admin.actor import ActorAdmin
admin.site.register(Actor, ActorAdmin)
...