Django
의 개체를 필터링하는 가장 좋은 방법은 무엇입니까?장고에서 객체를 필터링하는 가장 실용적이고 효율적인 방법은 무엇입니까?
필자의 경우, GET request
이 보낸 다른 매개 변수로 개체를 필터링해야합니다. 그래서, CBV
내 get_queryset
에 나는 내 사용자 지정 models.QuerySet
의 사용자 정의 함수에 값을 전송하고 결과 검색 :
return MyModel.objects.all().custom_filter(param1, param2, param3)
하지만 내 사용자 정의 기능에
, 가장 의심스러운 일들이 일어나고 있습니다.- 처음에는 통과 된 값을 확인하고이를 정리합니다.
그런 다음, 모든 매개 변수에 대해 별도로
Q Objects
을 사용하여 쿼리를 필터링합니다. 이것은 그 동안 잘 작동def custom_filter(self, param1, param2, param3): # cleaning and checking staff # ... then result = self.filter(Q() | Q()) # related to param1 if (param2 != None): result = result.filter(Q()) # related to param2 if (param3 != None): result = result.filter(Q() & Q()) # related to param3 # and etc. return result.distinct()
: 같은 사용자 정의 models.QuerySet
그것은 보인다. 그러나 나는 그것이 확실히 비효율적 인라고 생각합니다. 더 좋은 해결책이 있다면 누구나 제공해주십시오.
저는 장고에서 상당히 새로 왔습니다. 나는'QuerySet's가 게으름을 알지 못했습니다. – catscoolzhyk
큰 차이가 있습니다 :) – Shadow