Skip to main content
 首页 » 编程设计

python之通过一组字符串在 Django 中过滤

2025年05月04日38rubylouvre

我想在 django 中查找表中以一组字符串中的一个字符串开头的所有元素。我知道我们可以使用 __startswith 进行过滤以查找以字符串开头的元素,而且我们可以使用 __in 进行过滤以查找一组数字。我如何合并它们?

例如,对于这个模型

class Inventary: 
    code = models.CharField(max_length=10) 
    name = models.CharField(max_length=150) 

假设我有三个元素:

  1. 1.01.2 ---- 对象1
  2. 1.02.3 ---- 对象2
  3. 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'))