Лично я предпочитаю использовать signals:Django - Когда следует использовать сигналы и когда следует переопределять метод сохранения?
from django.db import models
from django.db.models.signals import pre_save
class MyModel(models.Model):
...
def custom_action_before_saving(sender, instance, *args, **kwargs):
...
pre_save.connect(custom_action_before_saving, sender=MyModel)
Но мне интересно, если вы несколько раз или задачу, когда лучше override the save method в классе модели:
from django.db import models
class MyModel(models.Model):
...
def save(self):
...
super(MyModel, self).save()
Я спрашиваю это потому, что есть пример переопределения метода save()
(ссылка, приведенная выше) на странице документации Django, поэтому я не думаю, что это плохая практика.
Давайте pre_save()
как, например, документы, говорит:
Это отправляется в начале метод а модели сохранения().
Означает ли это, что переопределение save
оказывает такое же влияние на производительность, что и при использовании сигналов?
Возможный дубликат [Django: когда настраивать сохранение по сравнению с использованием пост-сохранения сигнала] (http://stackoverflow.com/questions/5597378/django-when-to-customize-save-vs-using-post-save -сигнал) –
сигналы могут быть более беспорядочными, при этом необходимо учитывать повторяющиеся сигналы, https://docs.djangoproject.com/en/1.9/topics/signals/#preventing-duplicate-signals, загрузку светильников (если вы находитесь в что) срабатывание сигналов, когда вы не захотите, и другие капризы ... –
@luke_aus - это не то же самое, что использование 'if self ....:' overriding save во избежание выполнения кода в некоторых случаях? – Gocht