Эффективно удалить осиротевшие объекты / теги m2m в Django

У меня есть две модели - Photo и Tag - которые связаны через ManyToManyField.

class Photo(models.Model):
    tags = models.ManyToManyField(Tag)

class Tag(models.Model):
    lang = models.CharField(max_length=2)
    name_es = models.CharField(max_length=40)
    name_en = models.CharField(max_length=40)

Время от времени мы получаем потерянные теги, на которые больше не ссылается ни одна фотография. Есть ли эффективный способ удаления этих тегов? Я знаю об этом ответе: Django: удалить M2M-записи?

И наше решение выглядит следующим образом:

for tag in Tag.objects.all():
    if not tag.photo_set.select_related(): tag.delete()

Тем не менее, с увеличением базы данных время выполнения этого скрипта становится крайне высоким :-P Есть ли эффективный способ получить список всех идентификаторов тегов из таблицы тегов, а затем список всех идентификаторов тегов из «многие ко многим»? таблица для создания списка пересечений?

Ответы на вопрос(3)

Ваш ответ на вопрос