2015-03-17 2 views
0

У меня есть свойство модели Django __iter__, которое возвращает генератор (итератор), и теперь я хочу преобразовать полученный итератор в queryset, что позволяет мне делать дальнейшую фильтрацию на результирующем наборе запросов.Преобразование генератора (итератора) в django queryset

car = Car.objects.get(id=45) 
# __iter__ returns Car objects 
cars = car.__iter__() 
cars.filter(name='abc') ? 

Вышеуказанное будет вызывать ошибку, потому что я не могу фильтровать генератор (итератор).

Кроме того, я не хочу, чтобы преобразовать генератор (итератор) в список идентификаторов, которые я могу использовать в Car.objects.filter()

Любые идеи о том, как решить данную проблему.

Благодаря

ответ

0

Как вы сказали, если ваш метод __iter__ возвращает генератор, это не представляется возможным выполнить дальнейшие методы QuerySet на него.

Один из вариантов - вернуть идентификаторы и использовать фильтр id__in, но вы уже сказали, что не хотите этого делать.

Другой вариант - сделать дополнительную фильтрацию в Python вместо SQL.

car = Car.objects.get(id=45) 
# __iter__ returns Car objects 
cars = car.__iter__() 
cars = [c for c in cars in c.name='abc'] 

Не зная, что __iter__ делает, я не могу предложить какие-либо другие предложения.