[英]How to perform AND condition in django queryset?
我想編寫一個與此SQL查詢等效的Django查詢:
SELECT * FROM user WHERE name LIKE '%danny%' AND name LIKE '%jack%' AND name LIKE '%peter%' ...
在Django
,我有一個列表,例如:
lst=['danny','jack','peter']
如何構造Djagno queryset
過濾器?
使用Q運算符:
queryargs = [Q(name__contains=i) for i in lst]
queryset = User.objects.filter(*queryargs)
更新
我已經回答了這個問題,但是考慮到您的第二個擴展問題,即如何獲得組合
SELECT * FROM user WHERE (name LIKE '%danny%' AND name LIKE '%jack%' AND name LIKE '%peter%') OR (family LIKE '%danny%' AND family LIKE '%jack%' AND family LIKE '%peter%')
這應該工作:
from django.db.models import Q
qname = Q()
for i in lst:
qname &= Q(name__contains=i)
qfamily = Q()
for i in lst:
qfamily &= Q(family__contains=i)
queryset = Data.objects.filter(qname | qfamily)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.