删除在服务器上找不到文件的Django ImageField和FileField记录
Delete Django ImageField and FileField records whose files are not found on the server
我最近在我的媒体文件夹中丢失了一些文件,我想在我的应用程序的所有模型中删除其文件已被删除的图像 field/FileField 个对象。
我试过 django-cleanup,但它似乎在执行相反的操作,即删除服务器上的文件,其对象已从数据库中删除。
你可以写一个管理命令,这里有一个处理方法
Class cleanup(BaseCommand):
def handle(self,options):
for obj in Files.objects.all():
if os.path.exists(settings.MEDIA_DIR+ obj.filename): continue
obj.delete()
请注意,如果文件不存在,FileField 将是假的,因此您可以使用这个简单的解决方案:
for instance in ModelWithFileField.objects.all():
if bool(instance.file_field):
continue
instance.delete()
您甚至可以在 django 中完成 shell,因此您不必为其编写脚本。
我最近在我的媒体文件夹中丢失了一些文件,我想在我的应用程序的所有模型中删除其文件已被删除的图像 field/FileField 个对象。
我试过 django-cleanup,但它似乎在执行相反的操作,即删除服务器上的文件,其对象已从数据库中删除。
你可以写一个管理命令,这里有一个处理方法
Class cleanup(BaseCommand):
def handle(self,options):
for obj in Files.objects.all():
if os.path.exists(settings.MEDIA_DIR+ obj.filename): continue
obj.delete()
请注意,如果文件不存在,FileField 将是假的,因此您可以使用这个简单的解决方案:
for instance in ModelWithFileField.objects.all():
if bool(instance.file_field):
continue
instance.delete()
您甚至可以在 django 中完成 shell,因此您不必为其编写脚本。