2010-07-08 54 views
0

我只是想知道是否有任何示例可以从其他人的主题中获取。灵活搜索页面的良好实践 - Django

我在Django中有一个页面,它使用过滤器来执行搜索。

目前我做的GET参数进行简单的检查,并相应增加了.filter()的查询集:

if color: 
    query.filter(color=color) 

这感觉有点像一个丑陋的方式做,我一直在想,如何让它更具活力。

任何想法?

回答

5

试试这个:

ALLOWED = ('color', 'size', 'model') 
kwargs = dict(
    (key, value) 
    for key, value in request.GET.items() 
    if key in ALLOWED 
) 
query.filter(**kwargs) 

这将让你做出这样的/search/?color=red&size=1/search/?model=Nikon&color=black请求。

+0

没办法!这很棒!你能用任何函数使用你刚才给我的方法吗? – RadiantHex 2010-07-08 11:25:46

+0

对DateTime有何建议? – RadiantHex 2010-07-08 11:30:12

+0

你可以,但是你不能使用国际字符作为关键字参数的名字,如果你想这样做,你应该使用下面的语法: def test(** kwargs): param = kwargs ['параметр'] # 做一点事。 – 2010-07-13 08:19:38