【发布时间】:2011-08-22 19:40:02
【问题描述】:
可以通过这种方式限制QuerySet:
creators_list = ['jane', 'tarzan', 'chita']
my_model.objects.filter(creator=creators_list)
???
【问题讨论】:
可以通过这种方式限制QuerySet:
creators_list = ['jane', 'tarzan', 'chita']
my_model.objects.filter(creator=creators_list)
???
【问题讨论】:
你的意思是这样的?
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)
可能有更好的方法,但我目前无法对其进行测试。
【讨论】:
此外,如果您使用 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)
...
【讨论】: