python - 将 Django 模型移动到它们自己的文件中

标签 python django orm model

以可维护性的名义,我将一些较大的模型移到了它们自己的文件中。所以在我有这个之前:

app/
  models.py

现在我有了这个:

app/
  models/
    __init__.py
    model_a.py
    model_b.py

这工作正常,但是当我使用 manage.py 执行同步数据库时,它不再为这些模型创建表。

我是不是忘记了什么?

谢谢,

最佳答案

模型必须在名为 app.models 的模块中找到,其中 app 是应用名称。所以你应该写在app/models/__init__.py文件

 from model_a import * 
 from model_b import * 

在 Django <1.7

注意从 django 1.7 开始,这不是必需的。

此外 ---(这就是我遇到的问题)您将不得不为您的模型手动更新 app_label 属性,所以写:

 __all__ = ["ModelA", "ModelA1"]

 class ModelA(models.Model):
      class Meta: 
          app_label = 'your_app'

如果没有它,django 将错误地设置应用程序。

如果你害怕 from model_a import * 是邪恶的,你总是可以在所有模块中设置 __all__ 属性。

关于python - 将 Django 模型移动到它们自己的文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9319430/

相关文章:

python - 获取方法/函数中使用的类的列表

python - mysqldb 数据库存储在 RAM 中

python - 找不到页面 404 Django 媒体文件

python - 使用 SQLAlchemy 基于类自动构建数据库表

python - 如何确定 Django 模型字段中不同值的数量?

python - 如何最好地在 ipyparallel 客户端和远程引擎之间共享静态数据?

html - 为什么 CSS 文件不改变 Django 元素中 HTML 标签的颜色?

Django get_or_create 方法不返回确切的对象

python - 按每组的最近日期获取第一个元素

python - 在 Django 的父模型中更新 auto_now DateTimeField