比较来自世界各地的卖家的域名和 IT 服务价格

Django .filter 在具有多种可能性的同一版本

我有一个物体的模型。 我还有一个筛选结果的选项列表。 我不确定是否有一个简单的方法来返回符合筛选器列表中的任何项目的任何对象的方法。 例如:


# 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/


有没有办法过滤 /在这种情况下/ 用户模型使任何对应于任何元素的对象 filterList?
已邀请:

君笑尘

赞同来自:

这可以完成
http://docs.djangoproject.com/ ... jects

from django.db.models import Q
usersWithPTRName = User.objects.filter/Q/name__startswith='P'/ |
Q/name__startswith='T'/ |
Q/name__startswith='R'//


此外,您可以在执行期间创建Q过滤器:


filterList = ['P', 'T', 'R']
query = Q//
for letter in filterList:
query = query | Q/name__startswith=letter/
usersWithPTRName = User.objects.filter/query/

卫东

赞同来自:

两个选择。

将第一个字母打开作为模型中的属性。

使用更复杂的请求。

你能行的


class User/ models.Model /:
... all the usual stuff ...
@property
def first_letter/ self /:
return self.name[:1]


现在你可以过滤使用
filter/ first_letter__in=/'P','T','R'/ /


第二个选项 - 构建 Django
Q

您的过滤器的对象。

从这里开始:

要回复问题请先登录注册