Как удалить аргумент kwargs, если он пуст? - PullRequest
0 голосов
/ 12 октября 2019

Я работаю с аргументами, переменными, которые я прохожу через GET и получаю, на мой взгляд, для выполнения моего набора запросов, проблема в том, что если я получаю пустой аргумент, не работает, я объясняю больше с помощью кода.

Пример моего URL:

http://127.0.0.1:8000/my_view/?val1=xd&val2=lol&sox=

My view.py

val1 = request.GET.get('val1', None)
val2 = request.GET.get('val2', None)
foo = request.GET.get('lol', None)

filters = {
    'code_field': val1,
    'tiempo_field__lte': val2,
    'code_id__exact': foo,
}

my_query = Babies.object.filter(**filters)

В этом примере sox пуст, поэтому он не работает для меняЯ думаю, что было бы элегантно, если аргумент становится пустым, не принимается в запросе.

1 Ответ

0 голосов
/ 12 октября 2019

фильтр фильтра

Использование словарного фильтра для фильтрации фильтра для удаления любых пар ключ: значение, для которых в качестве значения указано None:

filters = {key:value for key,value in 
              {
                  'code_field': val1,
                  'tiempo_field__lte': val2,
                  'code_id__exact': foo,
              }.items()
              if value is not None }

Внутренний dict может быть спискомсписков или кортежей, но тогда вы должны набрать много '[]' или '()'.

...