dmo*_*s18 7 python django signals django-1.2 python-2.7
我试图在我的django 1.2项目中的某些类中定义"before_save"方法.我在将信号连接到models.py中的类方法时遇到问题.
class MyClass(models.Model):
....
def before_save(self, sender, instance, *args, **kwargs):
self.test_field = "It worked"
Run Code Online (Sandbox Code Playgroud)
我已经尝试将pre_save.connect(before_save,sender ='self')放在'MyClass'本身,但没有任何反应.
我也尝试将它放在models.py文件的底部:
pre_save.connect(MyClass.before_save, sender=MyClass)
Run Code Online (Sandbox Code Playgroud)
我在这里读到了将信号连接到类方法,但无法弄清楚代码.
谁知道我做错了什么?
使用classmethod的一个工作示例:
class MyClass(models.Model):
#....
@classmethod
def before_save(cls, sender, instance, *args, **kwargs):
instance.test_field = "It worked"
pre_save.connect(MyClass.before_save, sender=MyClass)
Run Code Online (Sandbox Code Playgroud)
还有一个很棒的装饰器可以自动处理信号连接:http://djangosnippets.org/snippets/2124/
cbe*_*ner -1
您应该只使用函数,而不是在 MyClass 上使用方法。就像是:
def before_save(sender, instance, *args, **kwargs):
instance.test_field = "It worked"
pre_save.connect(before_save, sender=MyClass)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3216 次 |
最近记录: |