prefetch_related
を使用することができます タグを取得するには、「tags」プロパティを回避する必要があります。これは、jdiが言うように、これは実際の関係ではなくカスタムマネージャーであるためです。代わりに、次のことができます:
actions = Action.objects.select_related('reoccurance').filter(complete=False)\
.prefetch_related('tagged_items__tag')
残念ながら、action.tags.all
テンプレートコードでは、プリフェッチを使用せず、独自のクエリを実行することになります。そのため、そこでも「タグ」マネージャーをバイパスするというかなりハッキーな手順を実行する必要があります。
{% for tagged_item in action.tagged_items.all %}
<span>{{ tagged_item.tag }}</span>{% if not forloop.last %}, {% endif %}
{% endfor %}
(編集:「'QuerySet'オブジェクトに属性'prefetch_related'」がない場合は、prefetch_relatedが使用できないバージョンのDjangoを使用していることを示しています。)