2009-11-26 26 views
1

我想知道是否有方法可以在自定义管理器中传递两个或多个变量......有五个变量来自不同的视图,但在模型中,我声明了一个管理器处理基于这些变量之一的过滤...我希望在过滤器查询中考虑所有变量。有没有办法做到这一点?在管理器中传递几个值

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) 
+0

向我们展示你到目前为止所拥有的。 – 2009-11-26 09:02:55

+0

我已经添加了我的代码...基本上我想通过所有的值通过vehicle_query – Stephen 2009-11-26 09:56:41

回答

2

我觉得你给的代码是不必要的复杂。你并不需要定义一个查询集的子类,因为过滤可以而且应该在经理来完成:

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

不过,我真的不明白你的问题。你已经知道如何将一个变量传递给管理器方法,为什么传递更多的变量更困难?

+0

设法找出一个解决方案...与会议工作对我来说有点容易:) thnx的帮助丹尼尔 – Stephen 2009-11-26 16:21:15