2017-09-13 2 views
1

J'ai un modèle avec notes, les résultats d'une requête de filtre doivent être dans un ordre spécial pour chartit (en comparant les notes pour les stagiaires), mais je ne trouve pas la bonne façon de le faire. (Ok je suis nouveau à Django et Python;)Construire une liste de valeurs à partir de la liste de queryset (pk__in) dans l'ordre spécial

class Bewertung(models.Model): 
    auffassung = models.PositiveSmallIntegerField() 
    interesse = models.PositiveSmallIntegerField() 
    arbeitsabw = models.PositiveSmallIntegerField() 
    aufmerksamkeit = models.PositiveSmallIntegerField() 
    arbeitsgenauigkeit = models.PositiveSmallIntegerField() 
    verhalten = models.PositiveSmallIntegerField() 
    ausb_sach = models.PositiveSmallIntegerField(null=True, blank=True) 
    ausb_fuehr = models.PositiveSmallIntegerField(null=True, blank=True) 

la requête:

qs = Bewertung.objects.filter(pk__in=pk_list) 

Je veux comparer les valeurs entières dans un graphique à barres multiples par exemple

auffassung_from_pk (1,2,3) interesse_from_pk (1,2,3) .. n

mais tous les coups se termine par une liste avec beaucoup de valeurs désordonnées (Auffassung_from_pk (1), interesse_from_pk (1), Auffassung_from_pk (2) ..)

Je ne trouve pas un moyen de le résoudre sympa et efficace d'une manière python. alors j'ai besoin d'un peu d'aide, pouvez-vous m'aider?

+0

Vous voulez séparer les champs dans le modèle de la Queryset filtré? –

+0

Comment les filtres multiples sont-ils appliqués? – Rajez

Répondre

0

@Sachin Kukreja correct, séparez-le et commandez-le. donc tous les domaines (par exemple Auffassung doit être une liste avec tous les résultats de la queryset.)

si je 3 séries de requêtes résultantes (pk_list = (1,2,3)) Je besoin de quelque chose comme ((1,2, 1), (2,3,3) ...) ((Auffassung), (Interesse))

@Rajez il n'y a pas plusieurs filtres

et je lâchais tous mon approche de zéro pour commencer à nouveau. J'ai seulement cela (dans le shell Django)

for q in qs: 
    print(q.auffassung) 
    print(q.interesse) 

je suis vraiment du mal à voir au moment

0

essayer:

import itertools 

qs = Bewertung.objects.filter(pk__in=pk_list) 
values = qs.values_list('auffassung', 'interesse') 

result = list(itertools.chain(*values))