문제

사용자 정의 관리자에 둘 이상의 변수를 전달할 수있는 방법이 있는지 궁금합니다. 다른 뷰에서 나오는 5 가지 변수가 있지만 모델에는 이러한 변수 중 하나를 기반으로 필터링을 처리하도록 관리자에게 선언했습니다. ... 필터 쿼리에서 모든 변수를 고려하고 싶습니다. 이것을 할 방법이 있습니까?

class VehicleQuerySet(QuerySet):
    def vehicle_query(self, year):
      return  self.filter(common_vehicle__year__year__exact=year).exclude(status__status='Incoming')

class VehicleManager(models.Manager):
    def get_query_set(self):
      return VehicleQuerySet(self.model)

    def vehicle_query(self, year):
      return self.get_query_set().vehicle_query(year)

그런 다음보기에서 :

vehicle_query = Vehicle.smart_objects.vehicle_query(year)
도움이 되었습니까?

해결책

나는 당신이 주신 코드가 불필요하게 복잡하다고 생각합니다. 필터링이 관리자에서 필터링을 수행 할 수 있고 수행해야하므로 쿼리 세트 서브 클래스를 정의 할 필요가 없습니다.

class VehicleManager(models.Manager):
    def vehicle_query(self, year):
      return self.get_query_set().filter(common_vehicle__year__year__exact=year).exclude(status__status='Incoming')

그러나 나는 당신의 질문을 정말로 이해하지 못합니다. 하나의 변수를 관리자 방법으로 전달하는 방법을 이미 알고 있습니다. 왜 추가 변수를 추가로 통과 하는가?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top