2

djangoモデルが与えられた場合、その有効なインポートを自動生成するにはどうすればよいですか?モデルを取得してその情報を返す厳密な内部関数(開発者のみが使用します)があります。問題は、動的にインポートする方法がわからないことです。

たとえば、私のアプリの構造は次のようになります。

-myproject
    --books
    --music

そして機能:

def my_func(Model):
    from appname.models import Model
    ## Rest of function here ##

モデルに基づいてインポートを自動生成する方法はありますか?app_labelを取得するために_meta属性にアクセスすることを考えていましたが、Model._metaにアクセスするにはインポートが必要です。どんな考えでもいただければ幸いです。

4

3 に答える 3

4

get_modelはあなたが必要なものだと思います。

from django.db.models.loading import get_model
model = get_model('appname', 'ModelName')

今、あなたはこれを行うことができます。

objects = model.objects.all()
于 2012-11-13T06:23:38.290 に答える
1

を使用してモジュールを動的にインポートimportlibできます。これにより、2番目の引数としてパッケージを指定できます。

import importlib
mod = importlib.import_module('modulename', 'packagename')

モジュールの名前をモデルクラスと一致させたい場合は、次のことを試してみてください。

ModelClass.__name__
于 2012-11-13T05:41:30.330 に答える
0

関数を使用__import__して、モデルを文字列として渡します。

def my_func(Model):
    modelVar = __import__("appname.models"+Model)
于 2012-11-13T05:38:44.217 に答える