如何使用post_save与listener作为类的方法

时间:2012-09-15 10:39:05

标签: django signals

我可以使用post_save,并将侦听器作为类的方法吗?

我想要的是什么:

class UpdCatalog(models.Model):
    file = models.FileField(upload_to="catalog/")

class SomeClass:
    def codeType(text):
        row_code = text[0], text[1]
        return row_code, row_type

    def main(sender, instance, created, **kwargs):
        text = ["q", "w", "e". "r"]
        row_code, row_type = codeType(text)

signals.post_save.connect(SomeClass.main, sender=UpdCatalog)

当我尝试运行此代码时,main未被调用。没有错误。

当听众不在课堂上时,一切正常。

1 个答案:

答案 0 :(得分:1)

您需要研究函数和实例方法之间的区别。在您的情况下,您可以使用staticmethod装饰器。

class SomeClass:
    ...

    @staticmethod
    def main(sender, instance, created, **kwargs):
        text = ["q", "w", "e". "r"]
        row_code, row_type = codeType(text)