Если вы понимаете, что условия фильтра могут быть переданы в качестве аргументов ключевых слов, решение становится проще для визуализации. Например, рассмотрите фрагмент ниже. Это подробный способ сделать это:
conditions = dict()
for filter_key, form_key in (('genders', 'gender'), ('categories', 'category'), ('brands', 'brand')):
value = request.GET.get(form_key, None)
if value:
conditions[filter_key] = value
Test.objects.filter(**conditions)
Конечно, другим способом сделать это было бы использование формы, а не получение значений непосредственно из запроса GET.