в prefetch_related?
institution - это поле в модели ManyToMany... Если institution в filter, то это institution = Institution.objects.get(domain=domain)
это же разное делает
можете пояснить. Я так понимаю если я использую в prefetch, то я минимизирую запросы в БД. Institution - это поле в модели ManyToMany... В filter я фильтрую через queryset - Institution.objects.get(domain=domain). Или откуда prefetch узнать что именно эти добавки (additives) относятся к данному institution у которого domain=domain
ну, префетч на выборку не влияет, это чисто для оптимизации шаг
Смотря что нужно найти, если пересечение множеств, то да, intersection
так они же разные. Префеч это фича/костыль джанги. Он наполняет внутренний кэш запроса.
set не сработает со списками и словарями в них. Как то можно не через for сравнить данные друг с другом?
а что хочется сделать-то в итоге с данными?
ну смотрите, мне с фронта приходит массив и я хочу проверить схожесть данных с тем что есть в бд. Если все плохо, то я исправляю на данные из бд. Потом свой массив для сессии корзины формирую.
хм, а зачем шаг проверки, не лучше ли брать правильные данные сразу из бд?
ну там все непросто. И проверка эта нужна для того, чтобы если какой-то мамкин хакер захочет изменить через js цену у товара или его добавок. Вот я на сервере проверяю это
я имею в виду вообще не обращать внимание на цену пришедшую с фронта, а брать ту, которая в бд
Создай список с именами и потом filter(<smth>__title__in=<names_list>)
мог бы, но по-моему это лишняя движуха в логике вьюшки. Ищу более грамотный вариант, чтобы избежать циклов вложенных. Не исключено, что в итоге забью и через цикл оставлю проверку
Ага, а получать ненужные данные это не лишняя логика? Представь что у тебя 1000 элементов и с нужным тебе title будет 9xx элементом. Да и это не такая огромная логика, что бы не хранить её во вьюхе, как мне кажется(я вообще все такие get_smth вынес в сервисный слой в своём пет-проекте)
Так, стоп. Может быть ты меня не так понял? Я про фильтр queryset, а не фильтровать после запроса в базу
Обсуждают сегодня