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被保存”。我做错了什么?
2条答案
按热度按时间aydmsdu91#
Django < 1.7的原始答案:
您应包括:
字符串
到应用程序的
__init__.py
文件。Edit:Django >= 1.7:
信号可以在
django.apps.AppConfig.ready
中注册,如信号文档和AppConfig
doc中所述这段代码应该放在哪里?
严格地说,信号处理和注册代码可以存在于您喜欢的任何地方,但建议避免应用程序的根模块及其模型模块,以最大限度地减少导入代码的副作用。
在实践中,信号处理程序通常定义在与之相关的应用程序的信号子模块中。信号接收器在应用程序配置类的ready()方法中连接。如果您使用的是receiver()装饰器,请在ready()中导入信号子模块。
gpnt7bae2#
我不知道粘贴是否有误,但在代码中,你的模型名为Avaliacao而不是Aval,模型和发送方参数必须匹配