6. Какие сигналы подает Django во время создания или обновления объекта?¶
Django предоставляет сигналы, которые позволяют подключаться к жизненному циклу создания и удаления объектов модели. Django предоставляет следующие сигналы
pre_init
post_init
pre_save
post_save
pre_delete
post_delete
Среди них наиболее часто используемыми сигналами являются pre_save
и << 1 >>>. Мы рассмотрим их подробнее.
6.1. Сигналы против переопределения .save¶
Поскольку сигналы могут использоваться для таких же эффектов, как и переопределение .save
, вопрос о том, какой из них использовать, является частым источником путаницы. Вот когда следует использовать which.
Если вы хотите, чтобы другие люди, например, сторонние приложения, переопределили или настроили поведение объекта
save
, вам следует создать свои собственные сигналыЕсли вы подключаетесь к поведению
save
приложения, которое вы не контролируете, вам следует подключиться кpost_save
или << 2 >>>.Если вы настраиваете поведение сохранения приложений, которыми вы управляете, вам следует переопределить
save
.
Рассмотрим пример модели UserToken
. Этот класс используется для обеспечения аутентификации и должен создаваться каждый раз, когда создается User
.
class UserToken(models.Model):
token = models.CharField(max_length=64)
# ...