1

我希望能够将 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)),

谢谢。

4

2 回答 2

4

我认为您只能通过使用自定义视图/功能包装通用视图来做到这一点。另请参阅此处:

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

于 2010-02-05T21:27:18.077 回答
0

我认为您只是缺少字段名称周围的引号。

    'qobject': Q(status=("%s" % stat)),
于 2010-02-05T21:24:10.283 回答