2009-11-07 5 views

ответ

6

Возможно, это необходимо, но это не так. .update() не вызывает метод .save() для отдельных объектов в QuerySet и вместо этого обновляет все в одном вызове SQL (как это происходит). Поскольку он не использует .save(), было бы непоследовательно, если бы он вызывал сигналы до и после сохранения. Я могу, конечно, представить варианты использования, в которых это может потребоваться, но я также могу представить себе случаи, когда этого не будет. Мне кажется, что неправильное использование сигналов до и после сохранения - это правильное поведение здесь, поскольку оно оставляет большую гибкость для программиста. Нетрудно вызвать эти сигналы вручную, и я думаю, что это определенно лучшее дизайнерское решение, чтобы попросить программистов помнить о том, чтобы заставить сигналы получать желаемое поведение, чем просить их не забывать отключать сигналы, чтобы избежать нежелательного поведения.

+1

Ну, хотя упомянутые причины я считаю, что это как-то непоследовательное поведение, потому что метод queryset.delete() также не вызывает delete() в отдельных экземплярах, но посылает те же сигналы, что и model.delete()! –

+1

Кроме того, чтобы иметь возможность отправлять сигналы, связанные с сохранением, в наборе запросов, им необходимо было бы сделать выбор для элементов в дополнение к обновлению, исключая преимущества наличия метода массового обновления. –

Смежные вопросы