我第一次尝试使用 post_save 信号。我已阅读过这些文件,但仍需要一些建议。
我正在尝试更新名为“充电”的模型字段。
@receiver(post_save, sender=Message)
def my_handler(sender, **kwargs):
if not sender.charge:
sender(charge=sender.length(sender))
sender.save()
然而,这会给出错误消息'没有属性'费用',但消息中确实存在费用!
答案 0 :(得分:2)
sender
这里是Message
类本身,而不是正在保存的实例。实际实例作为关键字参数instance
传递。另外,对于post_save
,如果你不小心,你会陷入无限循环。最好使用pre_save
。
@receiver(pre_save, sender=Message)
def my_handler(sender, **kwargs):
instance = kwargs['instance']
if not instance.charge:
instance.charge = instance.length()
# No need to save, as we're slipping the value in
# before we hit the database.