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 に答える