【问题标题】:Django pre_save signalDjango pre_save 信号
【发布时间】:2011-12-22 18:18:39
【问题描述】:

我需要能够在保存模型数据之前对其进行更改,因此我认为使用 pre_save 处理程序是最佳选择:

@receiver(pre_save, weak = False)
def pre_category_save(sender, **kwargs):
    if kwargs['instance'].tags is None:
        kwargs['instance'].tags = kwargs['instance'].__unicode__().replace(' -> ', ', ')

在 kwargs 的实例键下,我希望找到我正在保存的实际模型实例,但我得到了一个 LogEntry 类的对象 - 这就是我的函数无法返回此错误的原因:'LogEntry' 对象没有属性'标签'。那么 - 我该如何解决呢?检查实例是否有属性标签不是解决方案,因为我总是只得到 logentry 对象。我最终可以重载 Model.save 方法,尽管我不想这样做。

【问题讨论】:

    标签: django django-signals


    【解决方案1】:

    您尚未指定此信号接收的模型类,因此它自己连接到 所有 模型保存 - 包括 LogEntry。而是这样做:

     @receiver(pre_save, sender=MyModel, weak=False)
     ...
    

    the documentation

    【讨论】:

    • 抱歉,应该是sender
    猜你喜欢
    • 2014-04-15
    • 2011-09-03
    • 1970-01-01
    • 2010-11-02
    • 1970-01-01
    • 2017-04-26
    • 2018-08-09
    • 1970-01-01
    • 2014-03-16
    相关资源
    最近更新 更多