Djangoのカスタムクエリセットフィルタ
-
21-08-2019 - |
質問
はジャンゴで、標準的な方法は、クエリセットのための複雑な、カスタムフィルタを書くこと、ありますか?
私は書くことができるように
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)。
所属していません StackOverflow