我想在django中找到表中所有以一组字符串中的一个字符串开头的元素。我知道我们可以使用 __ startswith 过滤来查找以字符串开头的元素,而且,我们可以使用 __ in 过滤来查找一组数字。我如何合并它们?
例如,对于此模型
class Inventary:
code = models.CharField(max_length=10)
name = models.CharField(max_length=150)
假设我有三个要素:
因此,我想要一个过滤器,允许我同时找到列表L中以某些字符串开头的对象,其中L在这种情况下为[" 1.01"," 1.02"。]
答案 0 :(得分:5)
>>> from django.db.models import Q
>>> values = ['1.01', '1.02']
>>> query = Q()
>>> for value in values:
... query |= Q(name__startswith=value)
>>> Inventary.objects.filter(query)
它动态构建一个查询,该查询将获取name
以1.01
或1.02
开头的对象:
>>> Inventary.objects.filter(Q(name__startswith='1.01') | Q(name__startswith='1.02'))
答案 1 :(得分:0)
您可以链接多个这样的过滤器:
model.objects.filter(name__startswith='1.01').filter(name__startswith='1.02')