【发布时间】:2015-10-05 23:30:51
【问题描述】:
我正在尝试创建一个简单的信号,该信号在 Staff 模型的新对象保存在 Django-admin 中后打印一些内容。 MVC python 文件位于AppName。这是每个文件中的代码:
models.py
from django.db import models
from django.db.models import signals
from django.dispatch import Signal
from django.contrib.auth.models import User
from AppName.signals import printfunction
from django.db.models.signals import post_save
class Staff(User):
class Meta:
proxy = True
app_label = 'auth'
verbose_name_plural = 'Users - Staff'
Signal.connect(printfunction, signal=signals.post_save, sender=Staff)
signals.py
def printfunction(sender, instance, signal, *args, **kwargs):
print ("signal alpha!")
但是它引发了以下异常:
TypeError: connect() got an unexpected keyword argument 'signal'
我关注了1.8 django documentation on signals.为什么会出现这个错误以及如何解决?
【问题讨论】:
-
再次查看文档。语法没有任何争论“信号”:Signal.connect(receiver[, sender=None, weak=True, dispatch_uid=None])
-
是的,逗号和“[”在我尝试时出错,所以我恢复到调度程序的 Signal 语法
-
现在可以工作了吗/?
-
好的,如果信号不应该在那里,我在哪里定义 post_save 操作?
-
您期望 print 语句的输出在哪里?你确定你有一个
Staff实例,而不是例如User实例?
标签: django django-models django-admin django-signals