开发者

Django 'objects.filter()' with list?

开发者 https://www.devze.com 2023-03-05 10:24 出处:网络
It is possible to limiting QuerySet in this kind of way: creators_list = [\'jane\',开发者_Go百科 \'tarzan\', \'chita\']

It is possible to limiting QuerySet in this kind of way:

creators_list = ['jane',开发者_Go百科 'tarzan', 'chita']
my_model.objects.filter(creator=creators_list)

???


You mean like this?

my_model.objects.filter(creator__in=creator_list)

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

EDIT

This is now a bit outdated. If you run into problems with the original code, try this:

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)

There's probably a better way to do it but I'm not able to test it at the moment.


Also if you're using sqlite and running into problems, there exists a limitation for the max number of items in the list.

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)
        ...
0

精彩评论

暂无评论...
验证码 换一张
取 消