本文介绍了Django中的动态过滤器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在我的应用中,我有一个表格。根据表单的不同,用户可以配置一个或多个过滤器。
In my app, I have a form. Depending of the form, one or many filters could be configured by the user.
在我看来,我举例来说:
In my view, I have for exemple :
query = Test.objects.filter(filter1 = request.post['filter1'], filter2 = request.post['filter2'], filter3 = request.post['filter3'])因此,有时filter1,filter2或filter3不存在。
So, sometimes filter1, filter2 or filter3 could not exist.
如果不存在任何过滤器,我只想忽略该过滤器。
If any filters doesn't exist, I just want to ignore the filter.
我可以用很多 IF条件,但可能有一个明智的解决方案?
I could do a script with many "IF" conditions but may be there is a smart solution ?
感谢您的帮助!
推荐答案您可以执行以下操作:
filters = {} for key, value in request.post.items(): if key in ['filter1', 'filter2', 'filter3']: filters[key] = value Test.objects.filter(**filters)其中的列表是你想要的钥匙
Where the list is a list of keys that you are intending to filter by
编辑
正如 Thomas Junk 所建议的那样,您可以通过以下方法使其变得更加整洁:
As Thomas Junk suggested you can make it a lot cleaner with a comprehension:
filters = { key: value for key, value in request.post.items() if key in ['filter1', 'filter2', 'filter3'] } Test.objects.filter(**filters)更多推荐
Django中的动态过滤器
发布评论