1

我需要能够在保存模型数据之前对其进行更改,因此我认为使用 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' 对象没有属性'tags' . 那么 - 我该如何解决呢?检查实例是否有属性标签不是解决方案,因为我总是只得到 logentry 对象。我最终可以重载 Model.save 方法,尽管我不想这样做。

4

1 回答 1

4

您尚未指定此信号接收的模型类,因此它自身连接到所有模型保存 - 包括 LogEntry。相反,请执行以下操作:

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

请参阅文档

于 2011-11-05T18:31:16.713 回答