sql >> Database teknologi >  >> RDS >> Mysql

Optimer django-forespørgsel for at trække udenlandsk nøgle og django-taggit-forhold

Det er muligt at bruge prefetch_related for at hente tags, men du er nødt til at omgå egenskaben 'tags', da - som jdi siger - dette er en brugerdefineret manager snarere end en ægte relation. I stedet kan du gøre:

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

Desværre, action.tags.all i din skabelon, vil koden ikke gøre brug af prefetch, og vil ende med at lave sin egen forespørgsel - så du skal tage det temmelig hackede trin at omgå "tags"-manageren der også:

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

(Red.:hvis du får "'QuerySet'-objekt har ingen attribut 'prefetch_related'", tyder det på, at du er på en version af Django under 1.4, hvor prefetch_related ikke er tilgængelig.)



  1. gemmer negativt tal i decimalfeltet i mysql-tabellen fra version 5.0.3

  2. Hvad er forskellen mellem 'ÅÅÅÅ' og 'RRRR' i Oracle SQL

  3. postgresql udenlandsk nøgle syntaks

  4. Hvordan kan jeg finde ud af, hvilke tabeller der refererer til en given tabel i Oracle SQL Developer?