Size: a a a

Django [ru] #STAY HOME

2020 May 29

AD

Alex Dem in Django [ru] #STAY HOME
Django ORM не так плох, как может показаться при прочтении статей в инетике
источник

AD

Alex Dem in Django [ru] #STAY HOME
А прикрутить алхимию не так просто
источник

AD

Alex Dem in Django [ru] #STAY HOME
Artyom Lazovikov
Как - не знаю, но почти уверен, что гайд найти возможно
Это я годика полтора назад
источник

AL

Artyom Lazovikov in Django [ru] #STAY HOME
Ну, за пару месяцев джангирования ОРМ мне невзлюбился, ванильный SQL кажется приятнее
источник

AL

Artyom Lazovikov in Django [ru] #STAY HOME
Правда приходится довольствоваться тем, что есть
источник

AD

Alex Dem in Django [ru] #STAY HOME
Artyom Lazovikov
Ну, за пару месяцев джангирования ОРМ мне невзлюбился, ванильный SQL кажется приятнее
во-во-во
А правда в том, что каждый подход хорош по своему
raw sql тоже многое теряет
источник

SK

Suren Khorenyan in Django [ru] #STAY HOME
Alex Dem
окей, а какие модели?
SELECT r.*
    , coalesce(SUM(cr_subq.field_a) - SUM(cr_subq.field_b), 0) AS field_result
FROM table_r r
LEFT JOIN (
   SELECT
          c_id
        , r_id
        , c.field_c * 0.05 AS field_a
        , c.field_c * 0.05 * r.percent / 100 AS field_b
   FROM table_cr cr
   JOIN table_r r on cr.r_id = r.id
   JOIN table_c c on cr.c_id = c.id
   WHERE status IN ('status1', 'status2')
) cr_subq on r.id = cr_subq.r_id
GROUP BY r.id
ORDER BY field_result DESC, r.id DESC
;


Где есть модели C, R и CR, где CR.c = models.OneToOneField(C, ..., а CR.r = models.ForeignKey(R, ...
источник

AD

Alex Dem in Django [ru] #STAY HOME
Artyom Lazovikov
Правда приходится довольствоваться тем, что есть
по сравнению с ОРМ
когда надо какие-то динамические конструкторы клепать
или делать реверс сложных запросов, ОРМ делает raw sql на ура
источник

SK

Suren Khorenyan in Django [ru] #STAY HOME
Alex Dem
Django ORM не так плох, как может показаться при прочтении статей в инетике
слушай, ну для поверхностных запросов прикольный сахар в фильтрах. но вот такой запрос на алхимии я бы сделал на раз. а в джанго орм мучаюсь уже часа два
источник

AD

Alex Dem in Django [ru] #STAY HOME
я с болью вспоминаю статистические свертки с прошлого места работы на raw sql
источник

AD

Alex Dem in Django [ru] #STAY HOME
которые занимали (условно) лист а4 при размере шрифта ~12
источник

AL

Artyom Lazovikov in Django [ru] #STAY HOME
Ух
источник

SK

Suren Khorenyan in Django [ru] #STAY HOME
ну вот когда такая проблема, а заказчику нужно быстрее и чтобы не платить за дополнительные часы, то проще уже воткнуть Raw SQL (только осилить бы прикрутить туда фильтрацию и пагинацию, но это сложнее будет)
источник

AD

Alex Dem in Django [ru] #STAY HOME
Suren Khorenyan
SELECT r.*
    , coalesce(SUM(cr_subq.field_a) - SUM(cr_subq.field_b), 0) AS field_result
FROM table_r r
LEFT JOIN (
   SELECT
          c_id
        , r_id
        , c.field_c * 0.05 AS field_a
        , c.field_c * 0.05 * r.percent / 100 AS field_b
   FROM table_cr cr
   JOIN table_r r on cr.r_id = r.id
   JOIN table_c c on cr.c_id = c.id
   WHERE status IN ('status1', 'status2')
) cr_subq on r.id = cr_subq.r_id
GROUP BY r.id
ORDER BY field_result DESC, r.id DESC
;


Где есть модели C, R и CR, где CR.c = models.OneToOneField(C, ..., а CR.r = models.ForeignKey(R, ...
я на ночь глядя не готов так глубоко, сорри :)
источник

SK

Suren Khorenyan in Django [ru] #STAY HOME
Alex Dem
я на ночь глядя не готов так глубоко, сорри :)
да в том то и дело, что это не глубоко ещё ((
источник

AD

Alex Dem in Django [ru] #STAY HOME
Suren Khorenyan
да в том то и дело, что это не глубоко ещё ((
смотри, я дал ключевую наводку
источник

SK

Suren Khorenyan in Django [ru] #STAY HOME
Alex Dem
смотри, я дал ключевую наводку
что именно?
источник

AD

Alex Dem in Django [ru] #STAY HOME
дам*
источник

SK

Suren Khorenyan in Django [ru] #STAY HOME
давай
источник

AL

Artyom Lazovikov in Django [ru] #STAY HOME
https://djbook.ru/rel1.8/topics/db/sql.html Если не захочется долбиться с ОРМ пол ночи
источник