Передать несколько значений в менеджере - PullRequest
1 голос
/ 26 ноября 2009

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

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)

1 Ответ

2 голосов
/ 26 ноября 2009

Я думаю, что код, который вы дали, слишком сложен. Вам не нужно определять подкласс queryset, поскольку фильтрация может и должна выполняться в менеджере:

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')

Однако я не совсем понимаю ваш вопрос. Вы уже знаете, как передать одну переменную в метод менеджера, почему передача дополнительных является более сложной?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...