0

我正在为 Django Filer 创建一个清理脚本,因此如果某个图像未在使用中,例如它与任何其他模型无关,那么我想删除该图像。

我不知道如何检测图像是否与任何其他对象相关。有谁知道如何实现这一目标?

当您按下删除按钮并在删除确认页面上时,您可以查看此信息,但我不确定 Django 是如何做到这一点的。

任何帮助将非常感激。

编辑

澄清,

from filer.models import Image

i = Image.objects.all().first()

i.get_all_related_objects.count()

上面的最后一行是无效的,但这是我想要实现的,所以如果这是 0,那么我可以删除文件。

4

1 回答 1

0

您可以获取所有相关对象,无论它们来自什么相关模型,使用

instance._meta.get_all_related_objects()

所以当假设你有一个Image模型时:

for image in Image.objects.all():
    if not image._meta.get_all_related_objects():  # if this list is empty, there are no relations pointing here
        image.delete()
于 2017-01-13T13:32:04.043 回答