Size: a a a

Django [ru] #STAY HOME

2020 June 06

AG

Artem Gubatenko in Django [ru] #STAY HOME
Alex Dem
хм
выглядит в целом верно
annotate обычно работает в паре с .values(), возможно стоит явно указать, что нужно получить на выходе и все встанет на свои места?
> обычно работает в паре с .values()
это как? норм работает и с остальными методами
источник

AD

Alex Dem in Django [ru] #STAY HOME
Artem Gubatenko
> обычно работает в паре с .values()
это как? норм работает и с остальными методами
annotate(...).values(...)

или наоборот, я подзабыл порядок; (но может быть не вообще не имеет значения)
источник

AD

Alex Dem in Django [ru] #STAY HOME
фишка в том, что если через values не объявить явно что надо получить при annotate вечно получаются разные артефакты
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
Alex Dem
annotate(...).values(...)

или наоборот, я подзабыл порядок; (но может быть не вообще не имеет значения)
порядок имеет значение
но почему "обычно с values()"?
источник

AD

Alex Dem in Django [ru] #STAY HOME
я не уверен, но по-моему джанго делает GROUP BY основываясь на том, что указано в .values()
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
Alex Dem
фишка в том, что если через values не объявить явно что надо получить при annotate вечно получаются разные артефакты
в таких простых кейсах, я не разу не сталкивался с какими-либо проблемами
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
Alex Dem
я не уверен, но по-моему джанго делает GROUP BY основываясь на том, что указано в .values()
а only()?
источник

AD

Alex Dem in Django [ru] #STAY HOME
Artem Gubatenko
в таких простых кейсах, я не разу не сталкивался с какими-либо проблемами
давай логически

.annotate(sum=Sum(...))

как джанго поймет какой Sum ты хочешь получить?
источник

AD

Alex Dem in Django [ru] #STAY HOME
тебе нужен GROUP BY в запросе
сам его джанго не сгенерируется, пока ты не скажешь как хочешь группировать
поэтому далее делаем .values(field1, field2)

это будет значить, что нужна сумма с агрегацией по (field1, field2)
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
Alex Dem
давай логически

.annotate(sum=Sum(...))

как джанго поймет какой Sum ты хочешь получить?
если делаем не на связанную таблицу, то вернет значение поля
источник

AD

Alex Dem in Django [ru] #STAY HOME
Artem Gubatenko
а only()?
тут не знаю, ничего не скажу в прицнипе
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
Alex Dem
тебе нужен GROUP BY в запросе
сам его джанго не сгенерируется, пока ты не скажешь как хочешь группировать
поэтому далее делаем .values(field1, field2)

это будет значить, что нужна сумма с агрегацией по (field1, field2)
интересно, не замечал такого эффекта)
источник

RS

Rust Saiargaliev in Django [ru] #STAY HOME
Dan Tyan
ну я меньше 5 не встречал =)
источник

D

Dmitry in Django [ru] #STAY HOME
Плюсую. Впс для проксей и прочего личного держу на vultr. Очень нравится
источник

AD

Alex Dem in Django [ru] #STAY HOME
Artem Gubatenko
интересно, не замечал такого эффекта)
вполне возможно, что там в запросе нет JOIN и тогда все то, что я написал в контексте вопроса чушь собачья)
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
Alex Dem
тебе нужен GROUP BY в запросе
сам его джанго не сгенерируется, пока ты не скажешь как хочешь группировать
поэтому далее делаем .values(field1, field2)

это будет значить, что нужна сумма с агрегацией по (field1, field2)
в таких кейсах, я обычно, .aggregate() юзаю
источник

Pl

Placor lavor in Django [ru] #STAY HOME
Товарищи, такая просьба, можете скинуть свои сайтики посмотреть как пример
источник

Pl

Placor lavor in Django [ru] #STAY HOME
на джанго
источник

N

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

М

Міша in Django [ru] #STAY HOME
На github посмотри
источник