Size: a a a

Django [ru] #STAY HOME

2019 July 22

S

Spirit💎 in Django [ru] #STAY HOME
сначала срабатывает бэкенд фильтр
источник

S

Spirit💎 in Django [ru] #STAY HOME
или я все же ошибаюсь?
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
бекенд фильтр это что?
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
это фильтр кверисетов?
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
они потом же
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
как он может тебе что-то фильтровать если у тебя ещё нечего фильтровать
источник

S

Spirit💎 in Django [ru] #STAY HOME
Alexander Ovchinnikov 🦁
это фильтр кверисетов?
ну да
источник

S

Spirit💎 in Django [ru] #STAY HOME
источник

S

Spirit💎 in Django [ru] #STAY HOME
не-а, не срабатывает гет кверисет во вьюсете раньше, чем бэкендс фильтр
источник

S

Spirit💎 in Django [ru] #STAY HOME
по идее, берется кверисет объектов модели, проходит через фильтр бекендс, потом уже попадает в гет кверисет, где проходит дополнительную фильтрацию, нет?
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
ну, стандартный ListModelMixin выглядит так:
        queryset = self.filter_queryset(self.get_queryset())

       page = self.paginate_queryset(queryset)
       if page is not None:
           serializer = self.get_serializer(page, many=True)
           return self.get_paginated_response(serializer.data)

       serializer = self.get_serializer(queryset, many=True)
       return Response(serializer.data)

то есть
1. получаем queryset
2. применяем туда фильтры
3. если нужно, то получаем одну указанную страницу
4. используем сериализатор чтобы получить данные из qs в нужном виде
5. отправляем данные клиенту
источник

S

Spirit💎 in Django [ru] #STAY HOME
логично, да
источник

S

Spirit💎 in Django [ru] #STAY HOME
Spirit💎
ну типа вот так
46 строчка ведет сюда
источник

S

Spirit💎 in Django [ru] #STAY HOME
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
и вот этот подход говорит о том, что ListModelMixin и другие Model миксины не нужны) вместо работы с моделью нужно вызывать сервисы) а всю работу с моделями делать там в сервисах
источник

S

Spirit💎 in Django [ru] #STAY HOME
тут брейкпоинты не срабатывают вообще
источник

S

Spirit💎 in Django [ru] #STAY HOME
Alexander Ovchinnikov 🦁
и вот этот подход говорит о том, что ListModelMixin и другие Model миксины не нужны) вместо работы с моделью нужно вызывать сервисы) а всю работу с моделями делать там в сервисах
это все хорошо, но перестраивать архитектуру, сам знаешь, не время)
источник

S

Spirit💎 in Django [ru] #STAY HOME
проекту уже 5 лет+ 1.11
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
Spirit💎
не-а, не срабатывает гет кверисет во вьюсете раньше, чем бэкендс фильтр
ну, я не знаю, что именно там происходит, если оно срабатывает раньше, ну, возможно, какой-нибудь
__init__
срабатывает, я не помню, как фильтр бекенды устроены, вроде это классы и там на каком-то этапе должна быть их инициализация
источник

S

Spirit💎 in Django [ru] #STAY HOME
источник