Skutecznie usuwaj osierocone obiekty / znaczniki m2m w Django

Mam dwa modele - Photo i Tag - które są połączone przez 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)

Co jakiś czas otrzymujemy osierocone tagi, do których nie odwołuje się już żadne zdjęcie. Czy istnieje skuteczny sposób usuwania tych tagów? Wiem o tej odpowiedzi:Django: usuń wpisy osierocone M2M?

Nasze rozwiązanie wygląda obecnie tak:

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

Jednak wraz ze wzrostem bazy danych środowisko wykonawcze tego skryptu staje się niepokojąco wysokie :-P Czy istnieje skuteczny sposób na uzyskanie listy wszystkich identyfikatorów tagów z tabeli tagów, a następnie listy wszystkich identyfikatorów tagów od wielu do wielu tabela, aby utworzyć listę skrzyżowań?

questionAnswers(3)

yourAnswerToTheQuestion