如何在同一周期访问模板中的多个查询集



我正在将不同的类似查询集转移到模板中。例如qset01,qset02。。。qset10。查询集的数量是已知的,也可以传输。如何在同一迭代级别的循环中访问模板中的这些查询集。当我遍历单个查询时,代码是:

{% for i in qset01 %}
{{i.field_01}}
{% endfor %}

对于许多查询集,它会是什么样子?这就是我需要的

{% for more_complex_iteration %}
{{qset01.field_01}}, {{qset02.field_01}}, ... {{qset09.field_01}}
{% endfor %}

或者,可以连接多个查询集。但我不知道怎么做。qset01有数据

country_1, 100
country_2, 200
country_3, 300

qset02有数据

country_1, 111
country_2, 222
country_3, 333

qset03有数据

country_1, 101
country_2, 202
country_3, 303

最终查询集应该有这个数据

country_1, 100, 111, 101
country_2, 200, 222, 202
country_3, 300, 333, 303

view.py

def function(request):
iteration_result = "i_01" #this is the first iteration result only
#from ["i_01","i_02", ... "i_09"]
qset1 = BigTable.objects.values(
'deb_nr_f__dcountry__wcode_f__code',
'deb_nr_f__dcountry__wcode_f__code_name',
).annotate(
tmp_code=F('deb_nr_f__dcountry__wcode_f__code'),
tmp_descr=F('deb_nr_f__dcountry__wcode_f__code_name')
).values('tmp_code','tmp_descr'
).order_by('-abs_2016__sum'
).annotate(
abs_2016__sum=Sum('abs_2016'),
).filter(id_nr_f__ie_code__unomer_f__nomer=iteration_result,
)

型号定义

class BigTable(models.Model):
deb_nr_f = models.ForeignKey(Debitor, on_delete=models.CASCADE, related_name='debitor_fnr', verbose_name='Debitor FNr', blank=True, null=True)
id_nr_f = models.ForeignKey(Material, on_delete=models.CASCADE, related_name='material', verbose_name='Material', blank=True, null=True)
abs_2016 = models.IntegerField('Abs. 2016', default=0)
abs_2017 = models.IntegerField('Abs. 2017', default=0)
abs_2018 = models.IntegerField('Abs. 2018', default=0)
abs_2019 = models.IntegerField('Abs. 2019', default=0)
abs_2020 = models.IntegerField('Abs. 2020', default=0)

我想用9个不同的"过滤器"查询单独过滤这个表。我需要一个最终的Queryset,就像这个一样,其中每一列(除了第一列(都是9个单独的"过滤器"查询的结果。

country_1, 100, 111, 101
country_2, 200, 222, 202
country_3, 300, 333, 303
querySets = [ qset01, qset02, ... ]
context = { 'querySets': querySets, ....}

{% for set in querySets %}
{{ set.country_1 }}
{% endfor %}
{% for set in querySets %}
{{ set.country_2 }}
{% endfor %}
{% for set in querySets %}
{{ set.country_3 }}
{% endfor %}

如果你想做这样的

{% for country_line in querySets %}
{% for country in country_line %}
{{ country }}
{% endfor %}
{% endfor %}

您需要将您的数据作为订购

[
[ country_1, country_1, country_1 ],
[ country_2, country_2, country_2 ],
[ country_3, country_3, country_3 ],
]

最新更新