我有一份可选参数列表,用于在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.
但在我看来,这似乎不是非常高效的。我只是希望能够得到一些其他执行这些选项筛选的方法的想法。