Size: a a a

Django [ru] #STAY HOME

2020 April 24

T

Tim in Django [ru] #STAY HOME
Alex Dem
все равно начать надо с ОРМ
а оформлять через джанго фильтр или нет - вопрос второстепенный
в смысле?
источник

AD

Alex Dem in Django [ru] #STAY HOME
Tim
в смысле?
если я правильно понял его задачу,
источник

T

Tim in Django [ru] #STAY HOME
нет, джанго фильтр сам все это сделает, ты ему просто говоришь, по каким фильтровать
источник

AD

Alex Dem in Django [ru] #STAY HOME
то надо фильтровать, но только если поле в БД не Null
джанго фильтр из коробки такое вряд ли делает :)
источник

T

Tim in Django [ru] #STAY HOME
так у него задача такая, что на входе аргументы могут быть None,  и если None, то просто не фильтровать
источник

АВ

Александр Виноградов in Django [ru] #STAY HOME
Alex Dem
то надо фильтровать, но только если поле в БД не Null
джанго фильтр из коробки такое вряд ли делает :)
не поле в бд не нул, а искомое ид, т.е. если в запросе ид не пришёл, то игнорируем поиск по этому полю, т.е. всё равно, что выдать всё без фильтра
источник

AD

Alex Dem in Django [ru] #STAY HOME
Tim
так у него задача такая, что на входе аргументы могут быть None,  и если None, то просто не фильтровать
ну да, это я торможу немного на ночь глядя, сорри
источник
2020 April 25

T

Tim in Django [ru] #STAY HOME
Александр Виноградов
не поле в бд не нул, а искомое ид, т.е. если в запросе ид не пришёл, то игнорируем поиск по этому полю, т.е. всё равно, что выдать всё без фильтра
смотри как можно
источник

АВ

Александр Виноградов in Django [ru] #STAY HOME
на счёт пустых аргументов. Как правильно обработать такой адрес
/api/get/brands/2//
т.е. тут отсутствует последние два значение
сейчас стоит на приём это
'api/get/brands/<int:country_id>/<int:region_id>/<int:area_id>',
источник

T

Tim in Django [ru] #STAY HOME
Александр Виноградов
на счёт пустых аргументов. Как правильно обработать такой адрес
/api/get/brands/2//
т.е. тут отсутствует последние два значение
сейчас стоит на приём это
'api/get/brands/<int:country_id>/<int:region_id>/<int:area_id>',
почему ты не используешь query параметры?
источник

АВ

Александр Виноградов in Django [ru] #STAY HOME
как?
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
Александр Виноградов
не поле в бд не нул, а искомое ид, т.е. если в запросе ид не пришёл, то игнорируем поиск по этому полю, т.е. всё равно, что выдать всё без фильтра
я бы составил/получил dict(<filter lookup name>:<value>) прогнал его через генератор или функцию`filter(), чтобы исключить значения с None, и распаковал бы в `queryset.filter(**my_dict)
источник

T

Tim in Django [ru] #STAY HOME
запрос будет такой /api/get/brands/?country_id=3&region_id=3area_id=3

апи урл объявляешь так /api/get/brands/

в контролере достаешь из request.GET все эти параметры (если надо)

потом убираешь все None(если вдруг там кто-то явно передаст country_id=None) - { key: value for key, value in request.GET.items() if value}

queryset.filter(**kwargs)
источник

T

Tim in Django [ru] #STAY HOME
Artem Gubatenko
я бы составил/получил dict(<filter lookup name>:<value>) прогнал его через генератор или функцию`filter(), чтобы исключить значения с None, и распаковал бы в `queryset.filter(**my_dict)
++
источник

АВ

Александр Виноградов in Django [ru] #STAY HOME
Artem Gubatenko
я бы составил/получил dict(<filter lookup name>:<value>) прогнал его через генератор или функцию`filter(), чтобы исключить значения с None, и распаковал бы в `queryset.filter(**my_dict)
а как выглядит распакованный фильтр? т.е. что в скобках будет
источник

АВ

Александр Виноградов in Django [ru] #STAY HOME
Tim
запрос будет такой /api/get/brands/?country_id=3&region_id=3area_id=3

апи урл объявляешь так /api/get/brands/

в контролере достаешь из request.GET все эти параметры (если надо)

потом убираешь все None(если вдруг там кто-то явно передаст country_id=None) - { key: value for key, value in request.GET.items() if value}

queryset.filter(**kwargs)
я вот про это спрашивал тут два часа назад, т.е. как в джанге принять вот такие параметры
источник

T

Tim in Django [ru] #STAY HOME
Александр Виноградов
я вот про это спрашивал тут два часа назад, т.е. как в джанге принять вот такие параметры
request.GET
источник

T

Tim in Django [ru] #STAY HOME
Александр Виноградов
я вот про это спрашивал тут два часа назад, т.е. как в джанге принять вот такие параметры
они уже там будут, просто сделай print(request.GET) в любом контроллере, только запрос сделай что-то типа этого url?test=1231
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
Александр Виноградов
а как выглядит распакованный фильтр? т.е. что в скобках будет
(question__startswith="value', question__...=value)

затесть в консоли
dt = dict(first__startswith="value1", second__sartswith="value_second")

def fnc(**kwargs):
   print(kwargs)

fnc(**dt)
источник

АВ

Александр Виноградов in Django [ru] #STAY HOME
аа... т.е. там просто через запятую можно
источник