문제

이미 필터링 된 쿼리 세트로 작업해야합니다. qs = queryset.filter (language = 'de') 그러나 일부 추가 작업에서는 이미 적용된 필터링 중 일부를 취소해야합니다. 필터를 다시 적용하고 새로운 매개 변수를 추가하거나 추가하는 새로운 매개 변수를 추가하거나 추가하는 방법이 있습니까? 쿼리 세트가 이미 언어 = 'de'를 위해 필터링되고 '또는 언어 ='en '을 연결할 수 있다면, 내가 찾고있는 것을 줄 것입니다! 감사!

도움이 되었습니까?

해결책

나는 당신이 요구하는 일을 할 수 있다고 생각하지 않습니다.

Django에서 OR을하는 방식은 다음과 같습니다.

Model.objects.filter(Q(question__startswith='Who') | Q(question__startswith='What'))

따라서 실제로 이것을하고 싶다면 :

Model.objects.filter(Q(language='de') | Q(language='en'))

나중에 필터 () 호출에 다른 또는 절을 추가 할 수 없으므로 동일한 필터 () 호출에 둘 다 넣어야합니다.

나는 당신이 이것을 시도하는 이유는 당신이 데이터베이스를 다시 치는 것에 대해 걱정하고 있기 때문에 정확한 결과를 얻는 유일한 방법은 데이터베이스를 다시 누르는 것입니다.

깨끗하고 건조한 코드를 생성하는 것에 대해 단순히 우려하는 경우 상단에 두 쿼리에 공통적 인 모든 필터를 넣은 다음 쿼리가 다음과 같이 설정 한 "포크"를 넣을 수 있습니다.

shared_qs = Model.objects.filter(active=True)
german_entries = shared_qs.filter(language='de')
german_and_english = shared_qs.filter(Q(language='de') | Q(language='en'))
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top