1

我有一个返回 django 模型类的函数,并希望将它们导入我的app/models/__init__.py.

我的功能是对这个动态模型示例(Django Wiki)的轻微修改。它克隆了一个模型并返回一个<class 'django.db.models.base.ModelBase'>稍作修改的“影子模型”。

就像一个人会做 (in app/models/__init__.py)from a import test1一样,我想做类似的事情:

from c import modeltocopy
from b import dynamic_model('ShadowModel', app_label='fake',fields=modeltocopy._meta.fields)`

我想这样做是为了从我的动态模型中在备用数据库中创建表。

这样的事情可能吗?

我目前工作的解决方案是一个管理命令,它是从( )django/core/management/commands/syncdb.py中定义的元组创建表的修改。 它确实有效,但我被要求导入我的动态模型,而不是只为我的动态模型运行单独的命令。settings.pySHADOW_MODELS = (('app.module1.module_a', 'ClassName1'),)
/app/models/__init__.py

4

1 回答 1

1

您不能导入函数调用的结果。相反,您可以先导入该函数,然后调用它以在模块的命名空间中创建模型类:

from c import modeltocopy
from b import dynamic_model as dyn_model_factory

ShadowModel = dyn_model_factory('ShadowModel', app_label='fake', fields=modeltocopy._meta.fields)

然后读取结果dynamic_model以从其他模块导入。

于 2013-03-14T11:39:18.103 回答