I have a list of optional parameters that I am using to filter in Django and am trying to come up with the best solution to apply these filters. My very first thought was to do something like:
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()
but since the parameters are all optional I might only want to filter based on
param_1 and leave the rest set to
'all'. Of course the other option is to say something like:
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.
but that doesn't seem really efficient in my mind. I was just hoping to get some ideas on other ways I might be able to perform these option filters.