我想在 django 中查找表中以一组字符串中的一个字符串开头的所有元素。我知道我们可以使用 __startswith 进行过滤以查找以字符串开头的元素,而且我们可以使用 __in 进行过滤以查找一组数字。我如何合并它们?
例如,对于这个模型
class Inventary:
code = models.CharField(max_length=10)
name = models.CharField(max_length=150)
假设我有三个元素:
- 1.01.2 ---- 对象1
- 1.02.3 ---- 对象2
- 1.03.4 ---- 对象3
因此,我想要一个过滤器,它允许我同时在列表 L 中找到以某个字符串开头的对象,在这种情况下,L 是 ["1.01","1.02"]。
请您参考如下方法:
>>> 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'))
