from itertools import chain
lista_final = list(chain(primeira_queryset, segunda_queryset))
Usar o método chain do itertools é mais rápido do que fazer um loop em cada um e apendar em outra lista. Por que ele é mais rápido? Como quase tudo em python, se há um método que faz mais rápido, muito provavelmente é por ter sido implementado em C. Não é diferente aqui, é mais rápido por ser implementado em C.Agora, caso você queira que a lista final tenha um ordem comum às querysets, você pode trabalhar com uma lambda dentro de um sorted() combinada ao chain().
lista_final = sorted( chain(primeira_queryset, segunda_queryset),
key=lambda instance: instance.data_criacao)
Se você está com Python 2.4 ou superior, usar attrgetter como alternativa ao uso de lambda.
from operator import attrgetter lista_final = sorted( chain(primeira_queryset, segunda_queryset),
key=attrgetter('data_criacao'))
fonte
Nenhum comentário:
Postar um comentário