Programing

장고 필터에서 AND를 어떻게 사용합니까?

lottogame 2021. 1. 5. 07:43
반응형

장고 필터에서 AND를 어떻게 사용합니까?


Django에서 개체를 검색하기 위해 "AND"필터를 만들려면 어떻게해야합니까? 예를 들어 단일 필드에 두 단어의 조합이있는 행을 검색하고 싶습니다.

예를 들어 다음 SQL 쿼리는 mysql 데이터베이스에서 실행할 때 정확히 수행합니다.

select * from myapp_question
where ((question like '%software%') and (question like '%java%'))

Django에서 필터를 사용하여 어떻게 수행합니까?


( 업데이트 :이 답변은 더 이상 작동하지 않으며 구문 오류가 발생합니다. keyword argument repeated)

mymodel.objects.filter(first_name__icontains="Foo", first_name__icontains="Bar")

update :이 답변을 작성하고 django를 수행 한 지 오래되었지만, 지금까지 가장 좋은 방법은 David Berger가 보여주는 것과 같은 Q 객체 메서드를 사용 하는 것입니다. Django 필터에서 AND를 어떻게 사용합니까?


철저히하기 위해 Q객체 메소드를 언급하겠습니다 .

from django.db.models import Q
criterion1 = Q(question__contains="software")
criterion2 = Q(question__contains="java")
q = Question.objects.filter(criterion1 & criterion2)

여기에있는 다른 답변은 더 간단하고 사용 사례에 더 적합하지만 유사하지만 약간 더 복잡한 문제 (예 : "not"또는 "or"가 필요함)가있는 사람이 이것을 본다면 여기에 참조를 갖는 것이 좋습니다.


Django에서 필터 표현식을 연결할 수 있습니다.

q = Question.objects.filter(question__contains='software').filter(question__contains='java')

" Chaining Filters " 에있는 Django 문서에서 더 많은 정보를 찾을 수 있습니다 .

참조 URL : https://stackoverflow.com/questions/769843/how-do-i-use-and-in-a-django-filter

반응형