2017-09-13 58 views
1

我有一個包含評級的模型,過濾器查詢的結果必須以特殊的順序排列(比較學員的評分),但無法找到正確的方式來做到這一點。 (確定我新的Django和蟒)以特殊順序構建查詢集列表(pk__in)中的值列表

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) 

查詢:

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

我想的整數值的多條圖中例如比較

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

但每次嘗試在列表中端有很多無序值的 (Auffassung_from_pk(1),interesse_from_pk(1 ),Auffassung_from_pk(2)..)

我找不到一種方法來解決它很好,高效的一種蟒蛇方式。 所以我需要一點幫助,你能幫忙嗎?

+0

你想從模型中分隔字段過濾的queryset? –

+0

如何應用多個過濾器? – Rajez

回答

0

@Sachin Kukreja正確,分開它並命令它。所以每個字段(例如auffassung必須是一個列表,其中包含查詢集的每個結果)。

如果我有3個結果查詢集(pk_list =(1,2,3))我需要類似((1,2, 1),(2,3,3)...)((auffassung),(interesse))

@Rajez沒有多個過濾器

我把我所有的做法的零開始新的。我只有這一點(在Django的殼)

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

我真的在這個艱難的時刻

0

嘗試:

import itertools 

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

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