2011-10-27 3 views
5

C'è un modo per ispezionare un set di query e ottenere informazioni su quali filtri/escludi sono stati applicati?Django: controlla queryset per ottenere i filtri applicati

ne ho bisogno per il debug: non riesco a capire il motivo per cui il mio set di query esclude alcuni dati ...

+3

È possibile utilizzare il metodo 'QuerySet.query' per vedere come appare l'SQL, se non lo si è già fatto. Forse sarebbe d'aiuto. –

risposta

6

che non sembra facile da fare. Ogni filtro viene applicato in modo diverso all'oggetto query in modo da non trovare uno schema definito "filter1", "filter2", "filter3".

Check out myqueryset.query.__dict__ - il filtro in entrata viene separato immediatamente nelle aree pertinenti e nessun record memorizzato. Dettagli in django.db.models.sql.query.Query.

Vorrei controllare l'SQL invece.

print myqueryset.query 
2

Se si esegue il debug in un guscio:

from django.db import connection 
print connection.queries 

Se si stanno facendo le richieste in un uso del browser django barra degli strumenti di debug, è un grande strumento e può essere molto utile:

Django Debug Toolbar