Size: a a a

Django [ru] #STAY HOME

2020 May 06

AA

Argen Almazbek Uulu in Django [ru] #STAY HOME
Всем добрый день. Пишу от лица компании "BB Soft". Чуть не по теме, но все же. Ищем python мидла к себе в команду. В основном у нас разработка ПО и поддержка сайтов и приложений. Кому интересно просьба скинуть CV на мой акк @almazbek_u_a . Всем удачного дня!)
источник

VY

Vitaly Yurusov in Django [ru] #STAY HOME
Ruslan Tyutin
prefetch_related не работает с values?
Посмотри в доке точно. НА сколько я помню prefetch_related кеширует только all запросы
источник

VY

Vitaly Yurusov in Django [ru] #STAY HOME
Vitaly Yurusov
Посмотри в доке точно. НА сколько я помню prefetch_related кеширует только all запросы
Если появляются фильтры, сортировки и тд то будет делаться запрос для каждого item
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
Ruslan Tyutin
prefetch_related не работает с values?
да
источник

А

Алексей in Django [ru] #STAY HOME
Vitaly Yurusov
Посмотри в доке точно. НА сколько я помню prefetch_related кеширует только all запросы
для фильтров можно Prefetch использовать, тогда закеширует нужное
источник

VY

Vitaly Yurusov in Django [ru] #STAY HOME
Алексей
для фильтров можно Prefetch использовать, тогда закеширует нужное
А как фильтр в prefetch_related указать? prefetch_related делает all запрос по связи и кеширует результат; Соответсвенно если потом обратится к self.items.all() то запроса не будет а если использовать другой метод не all или поменять сортировку то запрос будет.
источник

VY

Vitaly Yurusov in Django [ru] #STAY HOME
источник

А

Алексей in Django [ru] #STAY HOME
Vitaly Yurusov
А как фильтр в prefetch_related указать? prefetch_related делает all запрос по связи и кеширует результат; Соответсвенно если потом обратится к self.items.all() то запроса не будет а если использовать другой метод не all или поменять сортировку то запрос будет.
нет, смотри, ты фильтруешь в префетче заранее, а потом дергаешь all(), но all тебе даст уже отфильтрованное
источник

VY

Vitaly Yurusov in Django [ru] #STAY HOME
Алексей
нет, смотри, ты фильтруешь в префетче заранее, а потом дергаешь all(), но all тебе даст уже отфильтрованное
Интерсно, а как сделать филтр в prefetch? Ни разу такого не видел
источник

А

Алексей in Django [ru] #STAY HOME
Vitaly Yurusov
Интерсно, а как сделать филтр в prefetch? Ни разу такого не видел
Restaurant.objects.prefetch_related(
...     Prefetch('pizzas__toppings', queryset=Toppings.objects.order_by('name')))
источник

А

Алексей in Django [ru] #STAY HOME
вот тут в queryset ты пишешь все, что пожелаешь
источник

VY

Vitaly Yurusov in Django [ru] #STAY HOME
А ок спасибо… Что то новенькое узнал
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
Алексей
Restaurant.objects.prefetch_related(
...     Prefetch('pizzas__toppings', queryset=Toppings.objects.order_by('name')))
там не все так просто
если добавить to_attr, то все но чтоб была связь с основными объектами в запросе
а если без to_attr, то есть еще нюансы
Будет ругаться что пытаешься переписать уже заполненое / имеющееся поле

сейчас толком не помню нюансов
источник

А

Алексей in Django [ru] #STAY HOME
Artem Gubatenko
там не все так просто
если добавить to_attr, то все но чтоб была связь с основными объектами в запросе
а если без to_attr, то есть еще нюансы
Будет ругаться что пытаешься переписать уже заполненое / имеющееся поле

сейчас толком не помню нюансов
не разу не нарывался без to_attr что-то на ньюансы
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
Алексей
не разу не нарывался без to_attr что-то на ньюансы
повезло или может у тебя версия джанго выше, чем у меня, и там исправили
источник

А

Алексей in Django [ru] #STAY HOME
Artem Gubatenko
повезло или может у тебя версия джанго выше, чем у меня, и там исправили
наверное, выше, я ниже чем на 2ке не сидел, никогда, год с капелькой только в теме, чтобы префетчи использоваьт
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
Алексей
наверное, выше, я ниже чем на 2ке не сидел, никогда, год с капелькой только в теме, чтобы префетчи использоваьт
я на 2.2.* натыкался
источник

А

Алексей in Django [ru] #STAY HOME
Artem Gubatenko
я на 2.2.* натыкался
может быть ты дальше на то же поле еще что-то дергать пытался, и вот тогда
источник

А

Алексей in Django [ru] #STAY HOME
есть еще вот такой момент в доке
When using to_attr the prefetched result is stored in a list. This can provide a significant speed improvement over traditional prefetch_related calls which store the cached result within a QuerySet instance.
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
Алексей
наверное, выше, я ниже чем на 2ке не сидел, никогда, год с капелькой только в теме, чтобы префетчи использоваьт
по-моему, я пытался фильтровать
не помню как, почти месяц без джанго
источник