【问题标题】:Pass several values in a manager在管理器中传递多个值
【发布时间】:2010-12-20 14:18:50
【问题描述】:

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

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)

【问题讨论】:

  • 向我们展示你目前拥有的东西。
  • 我已经添加了我的代码...基本上我想通过 vehicle_query 传递所有值

标签: django filtering


【解决方案1】:

我认为您提供的代码过于复杂。您不需要定义查询集子类,因为过滤可以而且应该在管理器中完成:

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

但是,我不太明白你的问题。您已经知道如何将一个变量传递给管理器方法,为什么还要传递其他变量?

【讨论】:

  • 设法找到一个解决方案...使用会话对我来说更容易一些 :) 感谢 Daniel 的帮助
猜你喜欢
  • 2019-03-27
  • 2019-01-21
  • 1970-01-01
  • 2020-04-11
  • 1970-01-01
  • 1970-01-01
  • 2012-05-19
  • 2013-11-15
  • 1970-01-01
相关资源
最近更新 更多