質問

はジャンゴで、標準的な方法は、クエリセットのための複雑な、カスタムフィルタを書くこと、ありますか?

私は書くことができるように

MyClass.objects.all().filter(field=val)

私はこのような何かをしたいと思います:

MyClass.objects.all().filter(customFilter)

私は、ジェネレータ式を使用することができます。

(x for x in MyClass.objects.all() if customFilter(x))

それはchainabilityとどんなクエリセットが提供する他の機能を失うことになる。

役に立ちましたか?

解決

私はあなたがカスタムマネージャー。

他のヒント

マネージャの方法を使用して起動する勧告が良いものですが、より直接的にあなたの質問に答えるために:はい、使用<のhref = "http://docs.djangoproject.com/en/dev/topics/db/queries /#複合検索-と-Q-オブジェクト」のrel = "noreferrer"> Qはのオブジェクト。たとえばます:

from django.db.models import Q

complexQuery = Q(name__startswith='Xa') | ~Q(birthdate__year=2000)

MyModel.objects.filter(complexQuery)
|

Qオブジェクトを組み合わせることができます(OR)、&(AND)、および〜(NOT)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top