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

2024-04-19 01:02:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个电影/电视相关网站:电影被称为'标题',所以我有一个标题应用程序来处理这些操作。不过,片名也可以有流派和演员。你知道吗

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

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

这是最佳解决方案吗?甚至可能需要titles的子应用程序,至于genres类似应用程序的铸造是否在标题应用程序中?在深入研究之前,我显然想先从最好的方式开始。你知道吗


Tags: appsand应用程序标题电影title网站方式
1条回答
网友
1楼 · 发布于 2024-04-19 01:02:54

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

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

重要提示:

在模型中,确保在内部元类中包含app\u name。你知道吗

class Genre(models.Model):
    ...
    class Meta:
        app_label = _(u'films') #app's name
        ...

确保所有FK都作为字符串而不是类传递(有助于避免循环依赖)

title = models.ForeignKey("films.Title")

在您的films/models/__init__.py中,以正确的顺序导入,以免出现循环dep。你知道吗

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

相关问题 更多 >