3 votes

Extraire des valeurs de Django <QuerySet> en Python 3

J'ai un peu de code python :

UnitTestCollection.objects.filter(unit__type=unit_type)

qui produit des données au format :

<QuerySet [<UnitTestCollection: VALUE1>, <UnitTestCollection: VALUE2>...

Comment puis-je extraire une liste des valeurs seulement, c'est-à-dire

[VALUE1, VALUE2....]

11voto

Işık Kaplan Points 1547

Pourquoi pas une simple compréhension de la liste ?

qs = UnitTestCollection.objects.filter(unit__type=unit_type)
my_values = [item.field_name for item in qs]

Ou utilisez values_list() pour récupérer le champ spécifique de chaque élément directement dans votre queryset, avec l'avantage de l'évaluation paresseuse :

qs = UnitTestCollection.objects.filter(unit__type=unit_type)\
                               .values_list('field_name', flat=True)

0voto

hancho Points 284

values_list est meilleur qu'une compréhension de liste parce que les querysets sont évalués paresseusement. Ils ne seront exécutés que lorsque vous en aurez réellement besoin.

queryset = UnitTestCollection.objects.filter(unit__type=unit_type).values_list('<insert field>', flat=True)

Cela donnera [field1, field2, field3...]

si vous utilisez .values('<insert field>') vous obtiendrez [{field: field value1}, {field: field value2}, {field: field value3}...]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X