Comment filtrer un résultat de la chaîne Itertools ()?
-
13-09-2019 - |
Question
Dans mes vues, si j'importe un module Itertools:
from itertools import chain
Et je chaîne des objets avec:
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))
Comment puis-je commander "OurTags" par le "Date_added"?
pas surpeuplement,
ourtags = list(chain(franktags, amytags, timtags, erictags)).order_by('date_added')
Renvoie un objet "" List "n'a pas d'erreur d'attribut 'Ordre_By'".
La solution
import operator
ourtags = sorted(ourtags, key=operator.attrgetter('date_added'))
Autres conseils
À ce stade du code, vous avez déjà chargé tous les objets en mémoire et dans une liste. Triez simplement la liste comme vous le feriez pour n'importe quelle ancienne liste de python.
>>> import operator
>>> ourtags.sort(key=operator.attrgetter('date_added'))
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow