장고 OR 필터

Salman Mehmood 2024년2월15일
장고 OR 필터

OR 문으로 필터를 개별적으로 실행하는 방법에 대해 이 빠르고 쉬운 설명을 통해 배우고 Django 쿼리 세트에서 Q 개체로 필터를 실행하는 방법도 살펴보겠습니다.

필터를 사용하여 Django Queryset에서 OR 문을 개별적으로 그리고 Q 개체와 함께 실행

이 예에서는 일부 데이터가 추가된 우리가 만든 데이터베이스를 사용하고 이것이 어떻게 생겼는지 보여줍니다.

샘플 데이터 테이블

기본 예제를 만듭니다. posts라는 변수를 만들고 이 변수 ​​안에 모든 데이터를 저장합니다. 간단한 OR 문을 생성할 수 있는 필터를 실행할 것입니다.

먼저 OR 문을 만들 대상을 선택해야 하므로 austin 또는 baldwin으로 시작하는 모든 학생의 이름을 수집하겠습니다.

surname__startswith 인수를 사용하고 surname을 전달하여 austinbaldwin 성으로 시작하는 모든 학생 기록을 추출합니다.

또는

서버를 실행하면 두 개의 항목이 반환된 것을 볼 수 있습니다.

첫 번째 코드의 출력

OR 문이 있는 기본 예를 보았지만 다른 필터와 더 많은 OR 문을 추가할 수 있습니다. 이제 OR 문을 사용하는 예를 하나 더 살펴보겠습니다. 하지만 이번에는 Q 개체를 사용합니다.

이것은 큐 개체에 대한 자세한 데모는 아니지만 Q 개체를 사용하여 더 복잡한 쿼리를 작성할 수 있다고 말할 것입니다. Q 객체를 활용하는 예를 보여드리겠습니다.

코드 명령은 거의 동일합니다. Q 객체 주위에 모든 것을 래핑하고 | 연산자를 사용하면 다른 Q 개체를 추가합니다. Student.objects.filter()를 다시 추가할 필요가 없습니다.

이것을 먼저 작성하고 성을 surname__startswith 인수에 전달했어야 합니다.

또는 및 q로 모든 학생 기록 추출

계속해서 이 쿼리를 실행하여 동일한 결과를 반환하겠습니다.

두 번째 코드의 출력

이것을 확장하고 싶다면 이 OR 문을 원하는 만큼 계속 추가할 수 있습니다. 우리는 성이 baldwin으로 시작하는 곳을 제외하고 모든 학생을 선택한다는 의미의 not ~Q를 추가했습니다.

q가 있거나 없는 모든 학생 기록을 추출합니다

이제 데이터베이스에서 항목을 제거하거나 선택하지 않는 데 사용되는 ~를 정의하기 때문에 모든 baldwin이 더 이상 표시되지 않는다는 것을 알 수 있습니다.

세 번째 코드의 출력

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn