Django - 按列表中的一部分键进行过滤

时间:2015-06-30 23:05:05

标签: python django django-models

我在django 1.8表中有一些数据: “关键”列值=“a.2”,“b.4”,“c.6” 我想用[“a”,“b”]过滤它并忽略点后面的部分。

Blog.objects.filter(key__startswith=['a','b'])

什么都不返回

Blog.objects.filter(key__contains=['a','b'])

什么都不返回

Blog.objects.filter(key__in=['a%','b%'])

什么都不返回

与循环相比,是否有一种有效的方法可以做到这一点?

1 个答案:

答案 0 :(得分:3)

您可以使用Q个对象进行尝试:

from django.db.models import Q
Blog.objects.filter(Q(key__startswith='a') | Q(key__startswith='b'))

https://docs.djangoproject.com/en/1.8/topics/db/queries/#complex-lookups-with-q

或使用regexiregex

Blog.objects.filter(key__iregex=r'^(a|b)\.')