Size: a a a

Django [ru] #STAY HOME

2020 May 06

C

Cicerō in Django [ru] #STAY HOME
вот ты модифицируешь метод сейв модели, получается этот сейв влияет и на другую модель, связанную по ФК, разве это нормально?
источник

f

felki in Django [ru] #STAY HOME
да мне вообще ето не для настоящего проекта, так для диплома, поэтому не думаю что будут претензии к коду
источник

RS

Rust Saiargaliev in Django [ru] #STAY HOME
Cicerō
вот ты модифицируешь метод сейв модели, получается этот сейв влияет и на другую модель, связанную по ФК, разве это нормально?
Да, именно это изменение требует по какой-то причине изменение инстанса другой модели
источник

A

Alex in Django [ru] #STAY HOME
Cicerō
вот ты модифицируешь метод сейв модели, получается этот сейв влияет и на другую модель, связанную по ФК, разве это нормально?
Думаю нормально
источник

RS

Rust Saiargaliev in Django [ru] #STAY HOME
А если ты это в сигнал впихнешь - это ни разу не явно и как я заметил по большим кодобазам - легко теряется, ибо явной связи нет
источник

RS

Rust Saiargaliev in Django [ru] #STAY HOME
Потом люди удивляются что у них что-то само поменялось непонятно откуда
источник

A

Alex in Django [ru] #STAY HOME
Rust Saiargaliev
Потом люди удивляются что у них что-то само поменялось непонятно откуда
+
источник

C

Cicerō in Django [ru] #STAY HOME
ну и куда оно теряется, лежит себе в signals.py
источник

RS

Rust Saiargaliev in Django [ru] #STAY HOME
Собственно, я для чего статью привел про это? Чтоб самому не объяснять :)
источник

C

Cicerō in Django [ru] #STAY HOME
ну а разве вклинивание в сейв не делает то же самое?
источник

RS

Rust Saiargaliev in Django [ru] #STAY HOME
Cicerō
ну и куда оно теряется, лежит себе в signals.py
У тебя кодобаза в 20-40 аппов, где-то есть сигналы, где-то нет.
Связанные модели принадлежат к разным аппам. Как быстро узнать где есть аффектящие твою модель сигналы?
источник

RS

Rust Saiargaliev in Django [ru] #STAY HOME
Cicerō
ну а разве вклинивание в сейв не делает то же самое?
Оно явное - вот тут прямо в модели лежит вызов логики (я не говою что сам код нужно впихивать туда, только вызов метода или таски) который к чему-то приводит, я сразу это вижу прочитав код модели
источник

C

Cicerō in Django [ru] #STAY HOME
ты делаешь A.save() и у тебя что-то меняется в Б
источник

A

Alex in Django [ru] #STAY HOME
А ещё сигналы и save не гарантированно отслеживаю изменения. Так как можно ещё изменить через query
источник

C

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

C

Cicerō in Django [ru] #STAY HOME
Alex
А ещё сигналы и save не гарантированно отслеживаю изменения. Так как можно ещё изменить через query
хочешь гарантии - пишешь триггер в базе
источник

yh

yasya huyase in Django [ru] #STAY HOME
https://gist.github.com/yasyahuyase/da7e6484673bd11257a4c775a9fd8d52

как валидировать данный формсет на наличие одинаковых item?
пробовал через unique_together полей item, contract в мете модели, но не выходит, так как ontract определяется в инстансе чайл формсета только при сохранении, то есть при валидации формы он не имеет значения и формсет не валидируется
нужно, что бы при сохранении формсета, выводились form и non_form ошибки о том, что поля имеют одинаковіе значения и формсет не сохранялся
источник

A

Alex in Django [ru] #STAY HOME
Хочу. И пишу
источник

RS

Rust Saiargaliev in Django [ru] #STAY HOME
Cicerō
а я сразу вижу в сигналах вызов калбека который делает что-то с родственной моделью, и не нужно лазить в кишки модели
Если ты знаешь что этот сигнал есть. Я же тебе не просто так привел пример с большой кодобазой. Другой пример - кодобаза в которую ты пришел со стороны. Сигналы в виду слабой связности не так легко читаются
источник

C

Cicerō in Django [ru] #STAY HOME
согласен, что есть слабые места у сигналов такие как “bulk_save” и “bulk_update” итд, но для его задачи они подходят нормально, не содаются же объекты рейтинга у него сотнями в батче
источник