我有一个可选参数列表,我将使用这些可选参数在Django中进行过滤,并试图提出应用这些过滤器的最佳解决方案。我的第一个念头是做类似的事情:
if param_1 != 'all' and param_2 != 'all': # etc.
class_var = ClassName.objects.filter(param_1__name=param_1, param_2__name=param_2) # etc.
else:
class_var = ClassName.objects.all()
但由于参数都是可选的,因此我可能只想基于进行过滤,param_1
而将其余参数设置为'all'
。当然,另一个选择是说:
class_var = ClassNam.objects.all()
if param_1 != 'all':
class_var.filter(param_1__name=param_1)
if param_2 != 'all':
class_var.filter(param_2__name=param_2)
# etc.
但这在我看来似乎并不十分有效。我只是希望从其他方式上获得一些想法,使我能够执行这些选项过滤器。
您可能需要研究Q
对象。简要地说,Q
可以让您OR
在查询中使用语句。在前面的页面中:
Polls.objects.get(
Q(question__startswith='Who') | Q(question__startswith='What')
)
这将拉出以“谁”或“什么”开头的问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句