【问题标题】:Django - model in multiple apps (multiple tables)Django - 在多个应用程序(多个表)中建模
【发布时间】:2021-06-10 18:29:32
【问题描述】:

我正在尝试将模型从一个应用程序导入另一个应用程序以创建新表等。

# app1/models.py

class MyModel(models.Model):
   myfield = models.CharField(...)
   ...

# app2/models/__init__.py

from app1.models import MyModel as MyShadowModel

我的期望python manage.py makemigrations 会看到 app2 的变化并创建相应的表。

  • 为什么没有发生?
  • 我需要做什么才能实现这一目标?

背景

Django 项目应处理数据并使更改可见。它由两个应用程序组成:

app1 包含已处理的数据 app2 处理变化并应显示 app1 中的数据将是什么样子。

想法:app2 将数据处理成“影子”模型。因此,我想在app2 的模型中使用与app1 完全相同的模型

【问题讨论】:

    标签: django django-models


    【解决方案1】:

    导入模型是不够的。想象一下,你只需要在 app2 的 models.py 中对 MyModel 做一些逻辑。创建另一个表没有意义。

    您必须声明另一个从父模型继承的模型才能复制它。

    from app1.models import MyModel

    class MyShadowModel(MyModel): ...

    【讨论】:

    • 完美,谢谢。你能解释一下,为什么我的方法不起作用?
    • 请注意,multi-table inheritance 使用从非抽象模型继承(只是一个与父模型具有一对一字段的额外表),因此为 @987654324 保存的数据@ 实际上仍会存储在 MyModel 中,我认为这不是 OP 想要的。
    猜你喜欢
    • 2016-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-05
    • 2016-12-04
    • 2022-01-06
    • 1970-01-01
    • 2013-08-20
    相关资源
    最近更新 更多