1

我想要解决的是这样的

names = ['Aleister', 'Matovu']
args = (Q(name__contains=name[0])|Q(name__contains=name[1]))
queryset.complex_filter(args)

问题是我有一个动态对象的名称,它的长度不固定。我想的是,如果我遍历名称并创建一个动态args对象,但我不确定那是什么类型的对象。我不确定该怎么做,所以我被卡住了。

如果您可以帮助解决这个问题,那将非常酷,或者如果您可以给我另一种方法来处理相同的场景,那将是很棒的。谢谢

4

3 回答 3

2
import operator
names = [...]
query = reduce(operator.or_, [Q(name__icontains=name) for name in names])
results = queryset.complex_filter(query)
于 2012-12-12T11:17:37.440 回答
0

我不知道Q在这种情况下是什么,但也许

import operator
qq = [Q(name__contains=i) for i in name)]
args = reduce(operator.or_, qq)

可能有帮助。但正如蒂米所写的一样,不要支持我,而是支持他。

如果没有,请在此处查看此问题

于 2012-12-12T10:53:05.440 回答
0

这是一个非常令人满意的解决方案。如果它对任何人有任何帮助

http://bradmontgomery.blogspot.com/2009/06/adding-q-objects-in-django.html

q = Q(content__icontains=term_list[0]) | Q(title__icontains=term_list[0])
for term in term_list[1:]:
    q.add((Q(content__icontains=term) | Q(title__icontains=term)), q.connector)

stories = stories.filter(q)
于 2012-12-12T12:08:58.223 回答