【问题标题】:Refactor large models.py file in Django app在 Django 应用程序中重构大型 models.py 文件
【发布时间】:2009-12-11 00:04:13
【问题描述】:

在阅读了 monokrome 对Where should Django manager code live? 的回答后,我决定将一个大的models.py 拆分为更小、更易于管理的文件。我正在使用文件夹结构

foodapp/
    models/
        __init__.py #contains pizza model
        morefood.py #contains hamburger & hotdog models

__init__.py 中,我从morefood.py 导入模型

from morefood import hamburger, hotdog

但是,当我运行 python manage.py syncdb 时,创建的唯一表是 foodapp_pizza - 我需要做什么才能让 Django 为我从 morefood.py 导入的模型创建表?

【问题讨论】:

  • 每个人对文件“太大”的大小都有不同的想法,但总的来说,我发现如果一个应用程序需要重构它的 models.py,这通常表明一个应用程序没有做“只是一件事”,需要将应用程序本身重构为多个应用程序。只是一个想法。
  • 下面的两个答案都很好。我更喜欢 kibitzer 的略低于它我可以将所有模型保存在模型文件夹中。我会留意 Baresi 提到的博文中提到的票证 (code.djangoproject.com/ticket/6961)。
  • @Carl – 好点。在这种特殊情况下,我最终将应用程序一分为二。

标签: django django-models


【解决方案1】:

试试这个:

食品应用/ __init__.py 模型.py /再来点吃的 __init__.py 汉堡包.py 热狗.py

并在 models.py 中执行此操作:

from foodapp.morefood.hamburger import *
from foodapp.morefood.hotdog import *

this blogpost 建议的那样。

【讨论】:

【解决方案2】:

或者,在您的 morefood.py 模型中,将以下内容添加到 Meta:

class Meta:
    app_label = 'foodapp'

然后 syncdb 将与您现有的结构一起使用

【讨论】:

    猜你喜欢
    • 2011-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    • 2016-06-19
    相关资源
    最近更新 更多