Django 在不知道文件名的情况下显示带注释的查询集的值
Posted
技术标签:
【中文标题】Django 在不知道文件名的情况下显示带注释的查询集的值【英文标题】:Django showing values of an annotated queryset without knowing the filed name 【发布时间】:2019-07-14 16:01:36 【问题描述】:我正在构建一个仪表板,您可以在其中交叉销售数据库中的数据。
例如,卖家的销售额,客户的产品等。我让用户选择选项1和选项2。
我将表单返回到视图并使用这些选项对模型进行注释:
if filter_opts.is_valid():
option_1 = filter_opts.cleaned_data["option_1"]
option_2 = filter_opts.cleaned_data["option_2"]
results = ventas.values(option_2).annotate(Count(option_1, distinct=True))
注释工作正常,如果我只是在模板中打印查询集
% for case in results %
case
% endfor %
我可以这样看:
'cliente': '502 EMSUR', 'prod_nombre__count': 9
然后在模板中我只想显示值。但是我不能正手告诉哪个值名称来做这样的事情:
% for case in results %
case.option_1
case.option_2
% endfor %
如果我遍历结果,我可以看到字段名称:
% for case in results %
% for item in case %
item
% endfor %
% endfor %
如何显示这些字段的值?
谢谢!
【问题讨论】:
【参考方案1】:由于results
中的每个case
都是一个字典,您可以使用模板内的属性.items
来遍历其键和值:
% for case in results %
% for item, value in case.items %
item - value
% endfor %
% endfor %
【讨论】:
感谢@bertucho,我认为这只适用于 Pandas 数据框。如果每件商品有多个值,我该如何显示? 如果你的意思是value
可能是一个项目列表,你可以像 % for x in value %
一样迭代它。是这个意思吗?以上是关于Django 在不知道文件名的情况下显示带注释的查询集的值的主要内容,如果未能解决你的问题,请参考以下文章
如何在不知道子类名称的情况下访问 django 中对象的子类?
Django:如何在不重新加载的情况下在页面上显示更新的信息