我有一个具有ImageField属性的模型。你知道吗
我使用django管理员更新模型对象,并且在尝试更新对象时上载新图像时,我需要一些东西来删除旧图像。你知道吗
因此,我创建了一个pre_save
信号,当用户试图更新模型对象时,它应该从服务器中删除旧的图像文件。你知道吗
问题是:当用户更新对象的属性而不是ImageField属性时,信号仍然会删除本地保存的图像文件。。你知道吗
我怎样才能改变信号删除文件,只有当一个新的文件被选中在django管理?你知道吗
换句话说,我需要检查用户是否在尝试更新django admin中的对象时上载了文件。你知道吗
重要提示:我的信号适用于许多型号。。我需要保持这样。你知道吗
这是信号代码:
@receiver(pre_save)
def pre_save_image_delete(sender, instance, **kwargs):
if not valid_model(sender.__name__):
return
# Get file path on the server
path = get_photo_path(sender.__name__, instance.pk)
# delete the file if it exists
if path and file_exists(path):
delete_file(path)
在尝试了许多方法之后,以下是解决方案:
只有在对象更新期间没有上载新文件时,上述代码才会为真。你知道吗
相关问题 更多 >
编程相关推荐