如何检测模型保存功能中的文件是否已更改

时间:2014-04-14 14:35:10

标签: python django models

如果文件已更改,使用现有文件更新记录时,我需要从S3存储桶中删除旧文件。

如何在Django中检测文件是否已更改?

这是我尝试过的(未经测试),但是Django是否有一些神奇的内置?

def save(self, *args, **kwargs):

    existing_file = Asset.objects.get(pk=self.pk)
    if existing_file != self.file:
        # remove from s3 before saving the new file

1 个答案:

答案 0 :(得分:1)

==!=只会比较模型实例的主键(查看__eq__()__ne__()方法implementation)。

比较模型实例的所有字段的一种方法是在两者上调用model_to_dict()

from django.forms.models import model_to_dict

if model_to_dict(existing_file) != model_to_dict(self.file):

您还可以指定fieldsexclude参数来控制要转储到字典的字段,在您的情况下,基本上要比较哪些字段。

希望有所帮助。