Мне нужно отправить электронное письмо при создании нового экземпляра модели Entry
через панель администратора.Так что в models.py
у меня есть:
class Entry(models.Model):
attachments = models.ManyToManyField(to=Attachment, blank=True)
#some other fields
#...
sent = models.BooleanField(editable=False, default=False)
Затем я регистрирую функцию обработчика post_save:
def send_message(sender, instance, **kwargs):
if not instance.sent:
#sending an e-mail message containing details about related attachments
#...
instance.sent = True
instance.save()
post_save.connect(send_message, sender=Entry)
Это работает, но, как я упоминал ранее, мне также нужно получить доступ к связаннымвложения, чтобы включить их детали в сообщение.К сожалению, instance.attachments.all()
возвращает пустой список внутри функции send_message
, даже если вложения действительно были добавлены.
Как я выяснил, при отправке сигнала post_save соответствующие данные сохраненной модели еще не сохраняются, поэтому яне могу получить связанные вложения из этого места.Вопрос в том, могу ли я выполнить это с помощью сигналов или любым другим способом, или я должен поместить этот код отправки электронной почты снаружи, например, переопределив представление изменения панели администратора для Entry
модель?