gpt4 book ai didi

django - 使用 post_save 信号处理程序访问新创建的模型实例的相关数据

转载 作者:行者123 更新时间:2023-12-04 20:21:51 25 4
gpt4 key购买 nike

我需要在 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 的管理面板更改 View 模型?

最佳答案

也许你可以使用 M2M Changed Signal反而?当 M2M 字段改变时发送该信号。

关于django - 使用 post_save 信号处理程序访问新创建的模型实例的相关数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5680931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com