gpt4 book ai didi

python - django 中的信号问题

转载 作者:太空宇宙 更新时间:2023-11-04 01:30:22 25 4
gpt4 key购买 nike

我正在使用信号发送邮件并且工作正常(现在我正在测试它并提供静态电子邮件地址)。但我想在我的邮件功能中使用模型字段的动态值。

例如 如果管理员从该模型中的管理仪表板更改任何内容,将使用 post_save 调用信号并调用邮件功能。但是我需要该模型中该用户的 ID,以便我可以从 auth_user 表中获取他的姓名和电子邮件地址。

我在 post_save 中发送模型的名称,但我不知道如何在可能的情况下在信号中使用它们的字段。

现在我正在使用这段代码。

我的模型

class ABC(models.Model):
.....
.......

post_save.connect(handlers.model_saved, sender=ABC)

被调用的信号。

from django.core.mail import send_mail


def model_saved(sender, **kwargs):
send_mail('Subject here', 'Here is the message.', 'from@example.com',
['ndhiman08@gmail.com'], fail_silently=False)
print "SAVED",sender,kwargs

终端响应

<class 'XYZ.models.ABC'> {'raw': False, 'instance': <ABC: #1 admin admin 2013-01-04 04:20:50+00:00>, 'signal': <django.dispatch.dispatcher.Signal object at 0xb612584c>, 'using': 'default', 'created': False}

请给我一些建议,以便我可以在信号中使用模型字段的值。

谢谢。

最佳答案

instance 参数提供给信号处理程序,它是保存的模型对象。所以你可以将它用作:

def model_saved(sender, **kwargs):
send_mail('Subject here', 'Here is the message.', 'from@example.com',
['ndhiman08@gmail.com'], fail_silently=False)
abc_obj = kwargs['instance']
#can use fields as
#abc_obj.somefield
print "SAVED",sender,kwargs

post_save documentation对此进行了解释。

关于python - django 中的信号问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14251737/

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