neo*_*ser 42 django django-models
我需要执行一个django查询,检查字段是否包含列表中的所有值.该清单的长度各不相同
例
User.objects.filter(first_name__contains=['x','y','z'])
Run Code Online (Sandbox Code Playgroud)
Ign*_*ams 67
User.objects.filter(reduce(operator.and_, (Q(first_name__contains=x) for x in ['x', 'y', 'z']))
Run Code Online (Sandbox Code Playgroud)
小智 27
import operator
from django.db.models import Q
q = ['x', 'y', 'z']
query = reduce(operator.and_, (Q(first_name__contains = item) for item in ['x', 'y', 'z']))
result = User.objects.filter(query)
Run Code Online (Sandbox Code Playgroud)
更具可读性的解决方案。
qs = User.objects.all()
for search_term in ('x', 'y', 'z'):
qs = qs.filter(first_name__contains=search_term)
Run Code Online (Sandbox Code Playgroud)
注意:查询集是惰性的,因此此代码进行 1 个数据库查询。
| 归档时间: |
|
| 查看次数: |
24542 次 |
| 最近记录: |