Django apps.get_models():如何从其他文件夹加载模型

x4shl7ld  于 2023-10-21  发布在  Go
关注(0)|答案(2)|浏览(169)

我的文件夹结构如下:

使用apps.get_models()时,apps/<some_app_name>/models.py中的所有模型都可以加载,但不幸的是,映像上的文件夹client/brand/company也有一个models.py文件,这些文件没有加载到apps.get_models()上(代码如下):

  1. import pytest
  2. from django.apps import apps
  3. # Set managed=True for unmanaged models. !! Without this, tests will fail because tables won't be created in test db !!
  4. @pytest.fixture(autouse=True, scope="session")
  5. def __django_test_environment(django_test_environment):
  6. unmanaged_models = [m for m in apps.get_models() if not m._meta.managed]
  7. for m in unmanaged_models:
  8. m._meta.managed = True

有人能解释一下我应该如何/在哪里设置pytest/Django来查找模型吗?
使用Python 3.9.18和Django 3.2.21
我不确定它是否对某些事情有帮助:这4个模型继承自Account,而PolymorphicMPTTModel继承自PolymorphicMPTTModel(这允许一些非常疯狂/令人困惑的父子关系)。

kqqjbcuj

kqqjbcuj1#

如果这些子模型被导入到account/models.pyaccount/models/__init__.py中,Django会识别它们:

  1. from .client import *
  2. from .brand import *
  3. from .reseller import *
  4. from .company impot *
  5. ...

您还可以创建独立包含models.py的新应用。

i1icjdpr

i1icjdpr2#

如何指定路径?

  1. return apps.get_model("apps/account/client/<YOUR_MODEL_NAME>")

  1. return apps.get_model("account/client/<YOUR_MODEL_NAME>")

我不确定哪一个是Django应用程序,以及它们在你的设置中是如何定义的,所以你可能必须使用其中一个。

相关问题