Django信号不起作用

6mw9ycah  于 2023-08-08  发布在  Go
关注(0)|答案(2)|浏览(132)

My models.py:>

class Aval(models.Model):
    cliente = models.ForeignKey(Cliente)
    salao = models.ForeignKey(Salao)
    rate = models.IntegerField(choices=RATE, default=5)
    criacao = models.DateTimeField(blank=True, null=True, auto_now=True)
    comentario = models.TextField(max_length=400, blank=True, null=True, default=None)
    aprovado = models.BooleanField(default=False)

字符串
My signals.py:>

@receiver(post_save, sender=Aval)
def new_rate(sender, instance, created, **kwargs):
    aval = instance

    print("Aval is saved.")


我正在测试Aval模型的post_save信号,当我保存一些对象Aval时,它不会打印“Aval被保存”。我做错了什么?

aydmsdu9

aydmsdu91#

Django < 1.7的原始答案:

您应包括:

import signals

字符串
到应用程序的__init__.py文件。

Edit:Django >= 1.7:

信号可以在django.apps.AppConfig.ready中注册,如信号文档和AppConfig doc中所述
这段代码应该放在哪里?
严格地说,信号处理和注册代码可以存在于您喜欢的任何地方,但建议避免应用程序的根模块及其模型模块,以最大限度地减少导入代码的副作用。
在实践中,信号处理程序通常定义在与之相关的应用程序的信号子模块中。信号接收器在应用程序配置类的ready()方法中连接。如果您使用的是receiver()装饰器,请在ready()中导入信号子模块。

gpnt7bae

gpnt7bae2#

我不知道粘贴是否有误,但在代码中,你的模型名为Avaliacao而不是Aval,模型和发送方参数必须匹配

相关问题