Django 사용자 정의 쿼리 세트 필터
-
21-08-2019 - |
문제
Django에는 쿼리 세트 용 복잡한 사용자 정의 필터를 작성하는 표준 방법이 있습니까?
내가 쓸 수있는 것처럼
MyClass.objects.all().filter(field=val)
나는 다음과 같은 일을하고 싶다 :
MyClass.objects.all().filter(customFilter)
발전기 표현식을 사용할 수 있습니다
(x for x in MyClass.objects.all() if customFilter(x))
그러나 그것은 체인 성과 쿼리 세트가 제공하는 다른 기능을 잃을 것입니다.
해결책
나는 당신이 관습이 필요할 것이라고 생각합니다 관리자.
다른 팁
관리자 방법을 사용하는 것이 좋습니다. 방법은 좋은 것이지만 질문에 더 직접 답변하려면 : 예, Q 객체. 예를 들어:
from django.db.models import Q
complexQuery = Q(name__startswith='Xa') | ~Q(birthdate__year=2000)
MyModel.objects.filter(complexQuery)
Q 객체는 |와 결합 할 수 있습니다 (또는), & (및) 및 ~ (아님).
제휴하지 않습니다 StackOverflow