sql >> Databasteknik >  >> RDS >> Mysql

Optimera django-frågan för att dra utländsk nyckel och django-taggit-relation

Det är möjligt att använda prefetch_related för att hämta taggarna, men du måste kringgå egenskapen 'tags', eftersom - som jdi säger - detta är en anpassad hanterare snarare än en sann relation. Istället kan du göra:

actions = Action.objects.select_related('reoccurance').filter(complete=False)\ .prefetch_related('tagged_items__tag')

Tyvärr, action.tags.all i din mallkod kommer inte att använda förhämtningen, och kommer att göra sin egen fråga - så du måste ta det ganska hackiga steget att kringgå "tagghanteraren där också:

{% for tagged_item in action.tagged_items.all %}
    <span>{{ tagged_item.tag }}</span>{% if not forloop.last %}, {% endif %}
{% endfor %}

(Ed.:om du får "'QuerySet'-objekt har inget attribut 'prefetch_related'", tyder det på att du använder en version av Django under 1.4, där prefetch_related inte är tillgängligt.)



  1. postgreSQL - in vs any

  2. Hur man lagrar JSON-sträng i MySQL db

  3. Utlösare för att förhindra infogning för dubbletter av data i två kolumner

  4. Hur man duplicerar en MySQL-databas på samma server