2016-08-08 7 views
1

私はカスタムQuerySetサブクラスを定義しようとしていて、django-model-utilsを使ってそれを私のモデルに添付しようとしています。上述したように、model_utils.managersからdjango-model-utilsを介してモデルにカスタムクエリーセットを添付する

がPassThroughManager

class FooQuerySet(models.query.QuerySet): 
    def my_custom_query(self): 
     return self.filter(...) 

class Foo(models.Model): 
    # fields go here.. 

    objects = PassThroughManager.for_queryset_class(FooQuerySet) 

インポートそれturns out

その:以前のDjangoのバージョン(私は1.9を使用しています)では、 PassThroughManagerは、以下のコードによってこれを達成するために使用されました

django-model-utils 2.4でPassThroughManagerが削除されました。代わりに、Djangoの 組み込みのQuerySet.as_manager()および/またはManager.from_queryset() ユーティリティを使用してください。今のよう

私は、コードを書き換えるために試みた

(申し訳ありませんが、それはあまりにも愚かに見える場合、私は経験の数ヶ月は、まだいくつかをやっている期限を満たすために盲目的に考えて)

class FooQuerySet(models.query.QuerySet): 
    def my_custom_query(self): 
     return self.filter(...) 

class Foo(models.Model): 
    # fields go here... 
    objects = QuerySet.as_manager(FooQuerySet) 

私はTypeError: as_manager() takes exactly 1 argument (2 given)で終わった。誰でも正しい構文で光を放つことができますか?

答えて

1

あなたはFooQuerySetに直接as_managerを呼び出す必要があります:、

objects = FooQuerySet.as_manager() 
+0

ダニエル、コードは動作しますが、奇妙なシンクタンクは、Eclipseが.filter、.ALLなどのキーワードの下に(一見無効な構文を示す)赤い下線を置くということですいくつかのモデル名。そして、最も驚くべきことに、コードはエラーなしでコンパイルされます!エディタのこの​​エラーサインはまだ刺激的です。これについてコメントできますか? –

+1

実際はありません。静的解析は、Pythonのような動的言語ではうまく機能しません。できればそれをオフにしてください。 –

関連する問題