灵活搜索页面的良好实践 - Django

Rad*_*Hex 0 python django filter django-models django-queryset

我只是想知道我是否可以从其他人那里得到关于这个话题的例子.

我在Django中有一个使用过滤器的页面,以便执行搜索.

目前我正在对GET参数进行简单检查,并相应地向查询集添加.filter():

if color:
  query.filter(color=color)
Run Code Online (Sandbox Code Playgroud)

这感觉有点像丑陋的方式,我有点卡住想知道如何让它变得更有活力.

有任何想法吗?

Ale*_*nko 5

试试这个:

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

这将允许您发出这样的请求/search/?color=red&size=1/search/?model=Nikon&color=black.