代码之家  ›  专栏  ›  技术社区  ›  mhost

通用视图中的Django动态Q对象

  •  1
  • mhost  · 技术社区  · 16 年前

    我希望能够将URL中捕获的变量传递给通用视图的Q对象。

    我创建了一个通用视图,它作为我的视图导入,处理诸如分页、排序、筛选等事情。

    我需要使用Q对象,因为有些页面需要一些或过滤器。每个页面也将根据不同的字段(和模型)进行过滤(因此是通用视图)。

    例子:

    view_customers_info = {
        "queryset" : Customer.all(),
        'qobject': Q(status=stat),
        "extra_context" : {
            "title" : 'View Customers',
        },
        'template_name': 'customer/view.html',
    }
    urlpatterns = patterns('',
      url(r'^customer/(?P<stat>\w+)/$', my_views.view, view_customers_info),
    )
    

    在本例中,此行抱怨stat不是全局名称:

    'qobject': Q(status=stat),
    

    如何将URL中捕获的变量传递到字典视图“客户”信息?

    我不能简单地将Q对象移动到常规视图中,因为其他页面将具有如下Q对象:

    'qobject': (Q(type=type) | Q(status=stat)),
    

    谢谢。

    2 回复  |  直到 10 年前
        1
  •  4
  •   Felix Kling    16 年前

    我认为只有用自定义视图/函数包装通用视图才能做到这一点。另请参见此处:

    http://docs.djangoproject.com/en/1.1/topics/generic-views/#complex-filtering-with-wrapper-functions

        2
  •  0
  •   buckley    16 年前

    我想你刚刚漏掉了字段名的引号。

        'qobject': Q(status=("%s" % stat)),
    
    推荐文章