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

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

我的文件夹结构如下:

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

import pytest
from django.apps import apps

# Set managed=True for unmanaged models. !! Without this, tests will fail because tables won't be created in test db !!
@pytest.fixture(autouse=True, scope="session")
def __django_test_environment(django_test_environment):
    unmanaged_models = [m for m in apps.get_models() if not m._meta.managed]
    for m in unmanaged_models:
        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会识别它们:

from .client import *
from .brand import *
from .reseller import *
from .company impot *

...

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

i1icjdpr

i1icjdpr2#

如何指定路径?

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

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

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

相关问题