我有一个对象模型.我还有一个用于过滤结果的选项列表.我不确定是否有一种简单的方法来过滤模型中的对象,以便返回与过滤器列表中的任何项匹配的任何对象.例如:
# returns all users with name starting with 'P'
usersWithPName = User.objects.filter(name__startswith = 'P')
# 3 letters to filter User model with
filterList = ['P', 'T', 'R']
# ideally would return all users with name starting with either 'P', 'T', or 'R'
usersWithPTRName = User.objects.filter(name__startswith = filterList)
Run Code Online (Sandbox Code Playgroud)
有没有办法过滤(在这种情况下)User模型,以便返回匹配filterList中任何一个项目的任何对象?
cat*_*ran 21
这可以使用Q对象完成
from django.db.models import Q
usersWithPTRName = User.objects.filter(Q(name__startswith='P') |
Q(name__startswith='T') |
Q(name__startswith='R'))
Run Code Online (Sandbox Code Playgroud)
您还可以在运行时构建Q过滤器:
filterList = ['P', 'T', 'R']
query = Q()
for letter in filterList:
query = query | Q(name__startswith=letter)
usersWithPTRName = User.objects.filter(query)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6925 次 |
最近记录: |