Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django中的信号问题_Python_Django_Model_Signals_Handlers - Fatal编程技术网

Python django中的信号问题

Python django中的信号问题,python,django,model,signals,handlers,Python,Django,Model,Signals,Handlers,我使用信号发送邮件,工作正常(现在我正在测试并提供静态电子邮件地址)。但是我想在邮件函数中使用模型字段的动态值 例如,如果管理员在该模型中更改了管理仪表板上的任何内容,则会使用post_save调用一个信号,并调用邮件功能。但我需要这个模型中那个用户的id,这样我就可以从auth_user表中获取他的姓名、电子邮件地址 我在post_save中发送模型的名称,但如果可能的话,我不知道如何在信号中使用它们的字段 现在我正在使用这个代码 我的模型 class ABC(models.Model):

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

例如,如果管理员在该模型中更改了管理仪表板上的任何内容,则会使用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}
{'raw':False,'instance':,'signal':,'using':'default','created':False}
请给我一些建议,以便我可以在信号中使用我的模型字段值


谢谢。

有一个
实例
参数提供给信号处理程序,它是保存的模型对象。 因此,您可以将其用作:

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

解释这一点。

我们可以在handler.py.中调用视图函数吗。因为当我试图在handler.py中导入视图时,它会给我内部服务器错误。@Inforian,理论上,是的,但不要认为实际上你可以这样做,因为在信号处理程序中没有
请求
和其他参数。是的,这是因为请求参数,但我通过在没有请求的情况下生成另一个函数来解决这个问题