Мне нужно уведомить пользователей по электронной почте, когда создается объект MyModel
. Мне нужно, чтобы они знали все атрибуты этого объекта , включая ManyToManyFields .
class MyModel(models.Model):
charfield = CharField(...)
manytomany = ManyToManyField('AnotherModel'....)
def to_email(self):
return self.charfield + '\n' + ','.join(self.manytomany.all())
def notify_users(self):
send_mail_to_all_users(message=self.to_email())
Первым делом я попытался переопределить функцию сохранения:
def save(self, **kwargs):
created = not bool(self.pk)
super(Dopyt, self).save(**kwargs)
if created:
self.notify_users()
Что не работает (многие из них кажутся пустыми QuerySet
), вероятно, потому что транзакция еще не была совершена.
Итак, я попробовал сигнал post_save
с тем же результатом - пусто QuerySet
.
Я не могу использовать сигнал m2mchanged
, потому что:
- много может быть None
- Мне нужно уведомлять пользователей, только если объект был создан, а не когда он был изменен
Вы знаете, как это решить? Есть какой-нибудь элегантный способ?