python - How to perform AND condition in django queryset? -


i want write django query equivalent sql query:

select * user name '%danny%' , name '%jack%' , name '%peter%' ... 

in django , have list example :

lst=['danny','jack','peter'] 

how construct djagno queryset filter?

use q operator:

queryargs = [q(name__contains=i) in lst] queryset = user.objects.filter(*queryargs) 

update

i have answered question, given second, expanded question on how obtain combination

select * user (name '%danny%' , name '%jack%' , name '%peter%') or (family '%danny%' , family '%jack%' , family '%peter%') 

this should work:

from django.db.models import q  qname = q() in lst:     qname &= q(name__contains=i)  qfamily = q() in lst:     qfamily &= q(family__contains=i)  queryset = data.objects.filter(qname | qfamily) 

Comments

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -