tutorial - python django example




Come si usa AND in un filtro Django? (2)

Come posso creare un filtro "AND" per recuperare oggetti in Django? Ad esempio, vorrei recuperare una riga che ha una combinazione di due parole in un singolo campo.

Ad esempio la seguente query SQL fa esattamente questo quando la eseguo sul database mysql:

select * from myapp_question
where ((question like '%software%') and (question like '%java%'))

Come lo realizzi in Django usando i filtri?


Per completezza, citiamo il metodo degli oggetti Q :

from django.db.models import Q
criterion1 = Q(question__contains="software")
criterion2 = Q(question__contains="java")
q = Question.objects.filter(criterion1 & criterion2)

Nota le altre risposte qui sono più semplici e più adatte al tuo caso d'uso, ma se qualcuno con un problema simile ma leggermente più complesso (come richiedere "non" o "o") lo vede, è bene avere il riferimento proprio qui.


Puoi concatenare le espressioni di filtro in Django:

q = Question.objects.filter(question__contains='software').filter(question__contains='java')

Puoi trovare maggiori informazioni nella documentazione di Django in " Filtri concatenati ".





django