Фильтр Django только если "категория" установлена! - PullRequest
1 голос
/ 03 сентября 2010

Как я могу это сделать?

Мне только, что фильтровать, если установлен запрос.

ex.если пол не установлен, фильтр будет следующим: Test.objects.filter (категории = категории, бренды = бренд)

def index(request):
    gender = request.GET.get('gender')
    category = request.GET.get('category')
    brand = request.GET.get('brand')

    Test.objects.filter(genders=gender, categories=category, brands=brand)

Ответы [ 2 ]

2 голосов
/ 03 сентября 2010

Если вы понимаете, что условия фильтра могут быть переданы в качестве аргументов ключевых слов, решение становится проще для визуализации. Например, рассмотрите фрагмент ниже. Это подробный способ сделать это:

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.

0 голосов
/ 03 сентября 2010
def index(request):
    gender = request.GET.get('gender', None)
    category = request.GET.get('category')
    brand = request.GET.get('brand')

results = Test.objects.filter(categories=category, brands=brand)
if gender:
    results = results.filter(genders=gender)

Если пол не указан, переменная пола будет установлена ​​на Нет, поэтому следует, если блок пола не будет выполнен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...