Python “django”__包括「;及__在;作为单个查询

Python “django”__包括「;及__在;作为单个查询,python,django,Python,Django,Django中有一个相当奇怪的问题,我不知道如何在一个语句中组合“\uuuu contains”和“\uuuu in” 因此,我的情况如下:我有一个条目列表,如下所示: a = ["hgfjhgj89789jkbjk", "jhgjkhj89789jkhkjh", "jhgkjhkj89689gfghdfhg"] 我想对照queryset检查一下这个列表——我通常会这样做: queryset = MyModel.objects.all().filter(my_field__in=a) 但是,

Django中有一个相当奇怪的问题,我不知道如何在一个语句中组合“\uuuu contains”和“\uuuu in”

因此,我的情况如下:我有一个条目列表,如下所示:

a = ["hgfjhgj89789jkbjk", "jhgjkhj89789jkhkjh", "jhgkjhkj89689gfghdfhg"]
我想对照queryset检查一下这个列表——我通常会这样做:

queryset = MyModel.objects.all().filter(my_field__in=a)
但是,在我的情况下,
my_字段
a
中的值不完全匹配,因此,我不得不求助于
\u contains
,如下所示:

queryset = MyModel.objects.all().filter(my_field__contains=a[0])
…但是,我的
a
现在有2000个条目,我不能运行上面的查询2000次-听起来很愚蠢

那么,如何将这个“\uuuu contains”与“\uuuu in”组合起来呢?
对不起,如果这是一个愚蠢的问题

这不能用一个过滤器完成,但可以用Django的
Q
对象完成:

from django.db.models import Q

query = Q()
for entry in a:
    query = query | Q(my_field__contains=entry)

queryset = MyModel.objects.filter(query)

让您一次完成复杂的查询-查看文档以了解更多示例。

这不能用一个筛选器完成,但可以使用Django的
Q
对象完成:

from django.db.models import Q

query = Q()
for entry in a:
    query = query | Q(my_field__contains=entry)

queryset = MyModel.objects.filter(query)

让您一次性完成复杂的查询-查看文档了解更多示例。

这与案例无关!这个问题被不幸地命名错误(固定),但它是完全相同的问题,答案完全相同。这与案件无关!这个问题被不幸地命名错误(已修复),但它是一个答案完全相同的问题。这是否保留了
a
中值的顺序?我不知道你的意思。生成的查询集将按数据库发出的任何顺序排序。问题似乎是,
a
的顺序没有保留在生成的查询集中-如果你知道我的意思的话。。因此,如果
a=[1,2,3]
查询集以不同的顺序输出结果……有没有办法在结果查询集中保留
a
的顺序?在数据库级别,只能按字段排序。因此,您可以按my_字段对结果进行排序,但不能让所有匹配[0]的结果都排在第一位,然后是匹配[1]的结果,等等。之后您必须使用Python进行排序。好的,Ben-明白:)接受了您的答案!非常感谢!这是否保留了
a
中值的顺序?我不确定你的意思。生成的查询集将按数据库发出的任何顺序排序。问题似乎是,
a
的顺序没有保留在生成的查询集中-如果你知道我的意思的话。。因此,如果
a=[1,2,3]
查询集以不同的顺序输出结果……有没有办法在结果查询集中保留
a
的顺序?在数据库级别,只能按字段排序。因此,您可以按my_字段对结果进行排序,但不能让所有匹配[0]的结果都排在第一位,然后是匹配[1]的结果,等等。之后您必须使用Python进行排序。好的,Ben-明白:)接受了您的答案!非常感谢!