Ваш код выглядит странно! Я понятия не имею, как это работает и что вы здесь делаете, но вот как я бы вместо этого сделал запрос:
from django.db.models import Q
myQuery = Q()
for i in range(0,(searchDiff+1)):
filterString = str(int(searchRange[0]) + i)
myQueryTwoD.append(Q(asn=filterString))
for j in range(0,(len(myQueryTwoD)-1)):
myQuery = myQuery | myQueryTwoD[j]
myQuerySet = my.objects.filter(myQuery)
Как это работает?
Blagh.objects.filter(Q(smth='A') | Q(smth='B'))
will generate query which looks like:
SELECT ... from blagh WHERE smth = 'A' OR smth = 'B'
Посмотрите и документы Django: Сложные поиски с Q
объектом
Ваш метод с itertools
приведет к множеству запросов к базе данных. С моим решением это будет один запрос с поиском OR
в предложении WHERE
.
Обновление:
Может быть, даже лучшим решением было бы что-то вроде этого:
strings = []
for i in range(0,(searchDiff+1)):
filterString = str(int(searchRange[0]) + i)
strings.append(filterString)
my_query_set = MyModel.objects.filter(arn__in=strings)
Я не понимаю, зачем вам эти внутренние петли ...