代码之家  ›  专栏  ›  技术社区  ›  MarkO

post_save错误消息“没有属性

  •  0
  • MarkO  · 技术社区  · 11 年前

    我正在尝试使用信号 保存后(_S) 这是第一次。我已经阅读了文件,但仍然需要一些建议。

    我正在尝试更新我的模型字段“电荷”。

    @receiver(post_save, sender=Message)
    def my_handler(sender, **kwargs):
        if not sender.charge:
            sender(charge=sender.length(sender))
            sender.save()
    

    然而,这会给出错误消息“没有属性”charge“,但消息中确实存在charge!

    1 回复  |  直到 11 年前
        1
  •  2
  •   David Eyk    11 年前

    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.