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)
    # ...