5

これをしばらく機能させようとして周りを検索した後、私は本当に困惑しているので、ここに投稿しています... django用に書いているクラスの関数をできるだけ汎用的にしたいので、getattrを使用して呼び出します一般的な方法で以下のような関数:

私がそれを行う方法(非一般的な方法):

from django.db.models import get_model
mymodel = get_model('appname', 'modelname')
dbobject = mymodel.objects.all()

私の試みの1つは、これを一般的な方法で作成しますが、まだ機能していません。何かを返しますが、適切なオブジェクトタイプではないため、そこからデータを取得できます(djangoのデータベース呼び出し)

ret = getattr(mymodel,'objects')
dbobject = getattr(ret,'all')
4

2 に答える 2

13

結果を呼び出すのを忘れました。

dbobject = mymodel.objects.all()

メソッドにアクセスしてmymodel.objects.allから呼び出します。

ret = getattr(mymodel,'objects')
self.dbobject = getattr(ret,'all')

メソッドにアクセスしますmymodel.objects.allが、呼び出しません。

必要なのは、最後の行を次のように変更することだけです。

self.dbobject = getattr(ret,'all')()
于 2010-09-13T08:37:05.503 に答える
2

関数の場合は、属性を呼び出す必要があります。例:

ret = getattr(mymodel,'objects')
all = getattr(ret,'all')
self.dbobject = all()
于 2010-09-13T08:37:09.653 に答える