Es ist möglich, prefetch_related
zu verwenden um die Tags abzurufen, aber Sie müssen die Eigenschaft 'tags' umgehen, da dies - wie jdi sagt - eher ein benutzerdefinierter Manager als eine echte Beziehung ist. Stattdessen können Sie Folgendes tun:
actions = Action.objects.select_related('reoccurance').filter(complete=False)\
.prefetch_related('tagged_items__tag')
Leider action.tags.all
in Ihrem Vorlagencode wird den Prefetch nicht verwenden und am Ende eine eigene Abfrage durchführen - also müssen Sie auch dort den ziemlich hackigen Schritt unternehmen, den 'Tags'-Manager zu umgehen:
{% for tagged_item in action.tagged_items.all %}
<span>{{ tagged_item.tag }}</span>{% if not forloop.last %}, {% endif %}
{% endfor %}
(Hrsg.:Wenn Sie "'QuerySet' object has no attribute 'prefetch_related'" erhalten, deutet dies darauf hin, dass Sie eine Version von Django unter 1.4 verwenden, in der prefetch_related nicht verfügbar ist.)