1
You can do this with keyword arguments and some filtering:
def get_queryset(self):
# filters_map keys must match your queries
filters_map = {
'id': self.request.GET.get('id'),
'first_name__icontains': self.request.GET.get('f_name'),
'middle_name__icontains': self.request.GET.get('m_name'),
'last_name__icontains': self.request.GET.get('l_name'),
'relative_name__icontains': self.request.GET.get('r_name'),
'phone_no_1__contains': self.request.GET.get('p_no'),
'phone_no_2__contains': self.request.GET.get('p_no'),
'gender': self.request.GET.get('gender')
}
# leave out empty strings
query = dict((key, value) for key, value in filters_map.iteritems() if value)
return Customer.objects.filter(**query)
A bit more about keyword arguments.
PS: I think it makes more sense to filter the queryset in the get_queryset
method.
Source:stackexchange.com