Il est possible d'utiliser prefetch_related
pour récupérer les balises, mais vous devez contourner la propriété 'tags', car - comme le dit jdi - il s'agit d'un gestionnaire personnalisé plutôt que d'une véritable relation. Au lieu de cela, vous pouvez faire :
actions = Action.objects.select_related('reoccurance').filter(complete=False)\
.prefetch_related('tagged_items__tag')
Malheureusement, action.tags.all
dans votre code de modèle n'utilisera pas le préchargement et finira par faire sa propre requête - vous devez donc prendre l'étape plutôt hacky de contourner le gestionnaire de 'tags' là aussi :
{% for tagged_item in action.tagged_items.all %}
<span>{{ tagged_item.tag }}</span>{% if not forloop.last %}, {% endif %}
{% endfor %}
(Ndlr :si vous obtenez "l'objet 'QuerySet' n'a pas d'attribut 'prefetch_related'", cela suggère que vous êtes sur une version de Django inférieure à 1.4, où prefetch_related n'est pas disponible.)