我希望能够将URL中捕获的变量传递给通用视图的Q对象。
我创建了一个通用视图,它作为my_views.view导入,处理分页,排序,过滤等内容...
我需要使用Q对象,因为对于某些页面,需要一些OR过滤器。每个页面也将根据不同的字段(和模型)进行过滤(因此是通用视图)。
示例:
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中捕获的变量传递给字典view_customers_info?
我不能简单地将Q对象移动到通用视图中,因为其他页面将具有如下所示的Q对象:
'qobject': (Q(type=type) | Q(status=stat)),
感谢。
答案 0 :(得分:4)
我认为你只能通过使用自定义视图/函数包装通用视图来实现此目的。另见:
http://docs.djangoproject.com/en/1.1/topics/generic-views/#complex-filtering-with-wrapper-functions
答案 1 :(得分:0)
我认为你错过了字段名称周围的引号。
'qobject': Q(status=("%s" % stat)),