以特殊顺序从queryset list(pk__in)构建值列表

时间:2017-09-13 17:45:28

标签: python django django-views

我有一个带有评分的模型,过滤查询的结果必须按照特殊的顺序排列(比较受训者的评分),但我找不到正确的方法。 (好吧,我是Django和python的新手;)

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)..)

我找不到以python方式解决它的方法。 所以我需要一点帮助,你能帮忙吗?

2 个答案:

答案 0 :(得分:0)

@Sachin Kukreja正确,将其分开并订购。所以每个字段(例如,auffassung必须是一个列表,其中包含查询集的每个结果。)

如果我有3个结果查询集(pk_list =(1,2,3))我需要类似((1,2,1),(2,3,3)......)((auffassung), (interesse))

@Rajez没有多个过滤器

我将我的所有方法设置为零以开始新的。我只有这个(在Django shell中)

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

我现在真的很挣扎

答案 1 :(得分:0)

试一试:

import itertools

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

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