Передать несколько значений в менеджере

StackOverflow https://stackoverflow.com/questions/1802024

  •  05-07-2019
  •  | 
  •  

Вопрос

Мне было интересно, есть ли способ передать две или более переменных в собственный менеджер ... есть пять переменных из разных представлений, но в модели я объявил менеджер для обработки фильтрации на основе одного из этих переменных ... Я хочу, чтобы все переменные учитывались в запросе фильтра. Есть ли способ сделать это?

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