Het is mogelijk om prefetch_related
. te gebruiken om de tags op te halen, maar je moet de eigenschap 'tags' omzeilen, aangezien - zoals jdi zegt - dit een aangepaste manager is in plaats van een echte relatie. In plaats daarvan kunt u het volgende doen:
actions = Action.objects.select_related('reoccurance').filter(complete=False)\
.prefetch_related('tagged_items__tag')
Helaas, action.tags.all
in uw sjablooncode zal geen gebruik maken van de prefetch, en zal uiteindelijk zijn eigen query uitvoeren - dus u moet de nogal omslachtige stap nemen om ook daar de 'tags'-manager te omzeilen:
{% for tagged_item in action.tagged_items.all %}
<span>{{ tagged_item.tag }}</span>{% if not forloop.last %}, {% endif %}
{% endfor %}
(Red.:als u "'QuerySet' object has no attribuut 'prefetch_related'" krijgt, suggereert dit dat u een versie van Django onder 1.4 gebruikt, waar prefetch_related niet beschikbaar is.)