python - 何时将子应用拆分为新应用

标签 python django organization

我正在创建一个电影/电视相关网站:电影被称为“片头”,因此我有一个片头应用程序来处理这些内容的操作。但是,标题也可以有流派和 Actor 。

什么是最好的组织方式?目前我有:

apps/titles (contains Title, and TitleGenre classes)
apps/titles/genres (contains Genre model class)

这是最优解吗? titles 的子应用程序甚至可能是必需的,至于 genres 是否会在 title 应用程序中对类似的类型进行转换?在深入研究之前,我显然希望以最好的方式开始。

最佳答案

我会按照这些思路做一些事情:

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)
...

关于python - 何时将子应用拆分为新应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17752991/

相关文章:

python - 值错误 : invalid literal for int() with base 10 for non-digits

python - 如何使用单个 python 文件向服务器发出命令并向 DUT 发出延迟 5 秒的命令

python - 谷歌应用引擎: Response "Content-Length" header is always 0

python - "Cannot find installed version of python-django or python3-django"运行 celeryworker 时

mysql - 我应该如何使用 MySQL 构建我的设置表?

Xcode 文件和文件夹干净的结构和组织

python - 检测 Pandas 数据框中的事件

mysql - 导致 mysql 抛出错误的设置

Python Django - models.Model 子类的构造函数

c++ - WinAPI - 如何组织大量的 HWND 对象?