如果文件已更改,使用现有文件更新记录时,我需要从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
答案 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):
您还可以指定fields
和exclude
参数来控制要转储到字典的字段,在您的情况下,基本上要比较哪些字段。
希望有所帮助。