0

私はこのコードを持っています

class DistrictResource(ModelResource):
    model=models.District
    res_name="district"
    class Meta:
        queryset = self.model.District.objects.active()

self.modelself を使用するとエラーが発生するため、meta で使用するにはどうすればよいですか

4

1 に答える 1

4

あなたが使用する必要があります

queryset = models.District.objects.active() 

それ以外の

queryset = self.model.District.objects.active()

この場合。

編集:

Pythonのスコープ解決のルールのため、内部クラス内にアクセスすることはできませんres_name

ブロックは、ユニットとして実行されるPythonプログラムテキストの一部です。ブロックは次のとおりです。モジュール、関数本体、およびクラス定義。

スコープは、ブロック内の名前の可視性を定義します。

クラスブロックで定義されている名前の範囲は、クラスブロックに限定されています。メソッドのコードブロックには拡張されません。関数スコープを使用して実装されるため、ジェネレーター式が含まれます。

Pythonスコープの解決について覚えておくのが簡単なルールは、LEGBルールです。

L.ローカル、つまり関数内で割り当てられた名前。

E.ローカル関数を囲みます。

G.グローバル

B.ビルトイン。


class MetaDjango / Tastypieがメタクラスを使用してクラスを構築するときに、構成オプションとして使用されます。変数を内部で定義するのではなく、Meta内部から外部の変数にアクセスする理由がわかりません。MetaMeta

于 2012-11-09T03:42:51.903 に答える