Como filtro um resultado da cadeia de itetools ()?
-
13-09-2019 - |
Pergunta
Nos meus pontos de vista, se eu importar um módulo ITERTOOLS:
from itertools import chain
E eu encorreo alguns objetos com ele:
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))
Como faço para encomendar "OurTags" pelo "date_added"?
Não é de termo,
ourtags = list(chain(franktags, amytags, timtags, erictags)).order_by('date_added')
Retorna um erro "Lista" Lista "não possui erro de atributo 'order_by'".
Solução
import operator
ourtags = sorted(ourtags, key=operator.attrgetter('date_added'))
Outras dicas
A essa altura do código, você já carregou todos os objetos na memória e em uma lista. Basta classificar a lista como você faria com qualquer lista antiga do Python.
>>> import operator
>>> ourtags.sort(key=operator.attrgetter('date_added'))
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow