Junior — Middle
88
Wat is de voorkeursmethode om gegevens op te slaan: door de save-methode te overschrijven of door signalen te gebruiken?
Antwoord van AI
sobes.tech AI
Предпочтительнее использовать переопределение метода save, если нужно изменить или расширить логику сохранения конкретной модели, так как это более явно и локально контролирует процесс сохранения.
Сигналы (например, в Django) удобны для отделения побочных эффектов от основной логики модели, например, для отправки уведомлений или обновления связанных данных без изменения самой модели.
Если задача — изменить поведение сохранения данных, лучше переопределять save. Если нужно реагировать на событие сохранения без вмешательства в модель, лучше использовать сигналы.
Пример переопределения метода save:
class MyModel(models.Model):
name = models.CharField(max_length=100)
def save(self, *args, **kwargs):
self.name = self.name.upper() # например, всегда сохранять имя в верхнем регистре
super().save(*args, **kwargs)
Пример использования сигнала:
from django.db.models.signals import post_save
from django.dispatch import receiver
@receiver(post_save, sender=MyModel)
def after_save(sender, instance, **kwargs):
print(f'Объект {instance} сохранён')