簡體   English   中英

如何在Django queryset中執行AND條件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM