Django'objects.filter()'有列表吗?

时间:2011-05-10 20:57:19

标签: django django-queryset

可以用这种方式限制QuerySet:

creators_list = ['jane', 'tarzan', 'chita']
my_model.objects.filter(creator=creators_list)

???

2 个答案:

答案 0 :(得分:36)

你的意思是这样吗?

my_model.objects.filter(creator__in=creator_list)

文档:http://docs.djangoproject.com/en/dev/ref/models/querysets/#in

修改

现在有点过时了。如果您遇到原始代码问题,请尝试以下方法:

from django.db.models import Q

my_filter_qs = Q()
for creator in creator_list:
    my_filter_qs = my_filter_qs | Q(creator=creator)
my_model.objects.filter(my_filter_qs)

可能有更好的方法,但我目前无法测试它。

答案 1 :(得分:0)

如果您正在使用sqlite并遇到问题,则列表中的最大项目数也有限制。

def divideChunks(l, n):
    for i in range(0, len(l), n):
        yield l[i:i + n]

for slicerange in divideChunks(objs, 10):
        myobjects = my_model.objects.filter(creator__in = slicerange)
        ...