Как отфильтровать результат Itertools Chain ()?
-
13-09-2019 - |
Вопрос
В моих взглядах, если я импортирую модуль итул:
from itertools import chain
И я подключаю некоторые объекты с ним:
franktags = Frank.objects.order_by('date_added').reverse().filter(topic__exact='art')
amytags = Amy.objects.order_by('date_added').reverse().filter(topic__exact='art')
timtags = Tim.objects.order_by('date_added').reverse().filter(topic__exact='art')
erictags = Eric.objects.order_by('date_added').reverse().filter(topic__exact='art')
ourtags = list(chain(franktags, amytags, timtags, erictags))
Как мне заказать «ourtags» на «date_added»?
не удивительно,
ourtags = list(chain(franktags, amytags, timtags, erictags)).order_by('date_added')
Возвращает ошибку «Списка», не имеет атрибута «order_by».
Решение
import operator
ourtags = sorted(ourtags, key=operator.attrgetter('date_added'))
Другие советы
К этому моменту в коде вы уже загрузили все объекты в память и в список. Просто сортируйте список, как будто вы бы сделали любой старый список Python.
>>> import operator
>>> ourtags.sort(key=operator.attrgetter('date_added'))
Не связан с StackOverflow