Django - 在保存对象后立即访问ManyToManyField

时间:2018-05-06 18:53:54

标签: python django django-models django-signals

我需要在创建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()

哪个不起作用(manytomany似乎是空的QuerySet)可能是因为交易尚未提交。

所以我尝试了同样结果的post_save信号 - 空QuerySet

我无法使用m2mchanged信号,因为:

  1. manytomany可以是None
  2. 我只需要在创建对象时通知用户,而不是在修改对象时通知用户
  3. 你知道如何解决这个问题吗?有一些优雅的方式吗?

0 个答案:

没有答案