Передать несколько значений в менеджере
Вопрос
Мне было интересно, есть ли способ передать две или более переменных в собственный менеджер ... есть пять переменных из разных представлений, но в модели я объявил менеджер для обработки фильтрации на основе одного из этих переменных ... Я хочу, чтобы все переменные учитывались в запросе фильтра. Есть ли способ сделать это?
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')
Однако я не совсем понимаю ваш вопрос. Вы уже знаете, как передать одну переменную в метод менеджера, почему передача дополнительных является более сложной?
Не связан с StackOverflow