Встречается на собеседованиях • сегодня

Что лучше, переопределить метод save или использовать сигнал

Переопределение метода save и использование сигналов имеют свои плюсы и минусы:

Переопределение save

  • Прямое и явное изменение логики сохранения объекта.
  • Легче отследить, где происходит изменение.
  • Может нарушить цепочку наследования, если не вызвать super().save().
python
class MyModel(models.Model):
    def save(self, *args, **kwargs):
        self.some_field = "modified"
        super().save(*args, **kwargs)

Сигналы (например, post_save)

  • Разделяет логику, уменьшая связность кода.
  • Позволяет реагировать на сохранение из любого места приложения.
  • Может усложнить отладку из-за неявного вызова.
python
from django.db.models.signals import post_save
from django.dispatch import receiver

@receiver(post_save, sender=MyModel)
def my_handler(sender, instance, **kwargs):
    instance.some_field = "modified"
    instance.save()

Выбор зависит от контекста:

  • Если изменение логики тесно связано с моделью — переопределяйте save.
  • Если логика внешняя или должна выполняться в нескольких местах — используйте сигналы.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы