python - 如何在get_context_data的Django中获取具有相同参数的每个字段的计数的数组?
问题描述
我将 ListView 用作显示数据库中所有车辆的模板。每辆车可以有更多的轮子,我试图在同一个模板中显示每个传感器有多少视图。
这些模型通过一个名为“vehicle_id”的字段相互关联。知道如何在views.py中做到这一点吗?
在一定程度上起作用的线如下
context['number_of_wheels'] = wheels.objects.filter(vehicle_id= F('vehicle_id')).count()
但是,这会计算数据库中的所有车轮,并为所有条目显示相同的值。知道如何单独计算、存储和显示它们吗?
解决方案
无需将这些数字添加到上下文变量中。它可能会增加更多复杂性,例如将该数字与传感器匹配。
你可以.annotate(..)
你Sensor
的 s,所以在 中queryset
,你可以写:
from django.views.generic.list import ListView
from app.models import Sensor
class SensorListView(ListView):
queryset = Sensor.objects.annotate(
nviews=Count('sensorview')
)
template = 'some_template.html'
Sensor
源自此的每个QuerySet
都会有一个额外的属性nview
s,其中包含相关SensorView
s 的数量。
然后,您可以在 中渲染它some_template.html
,例如:
{% for sensor in object_list %}
{{ sensor }}: {{ sensor.nviews }}
{% endfor %}
推荐阅读
- python - Numba 无法编译并显示非常奇怪的消息 - 似乎这应该有效?
- mysql - 数据库查询将是什么?
- swift - SwiftUI 将保存的值传递给父视图
- html - 添加到徽标的链接会添加到整个导航栏的链接
- postgresql - Liquibase 忽略数据库内容并从头开始创建差异
- swift - how to use form data in Alamofire
- php - 用 preg_replace 替换确切的域
- javascript - 检测 Alt/Option + textarea 中的另一个键
- python - Spyne(python web 服务框架)是否支持多线程?如果没有,有没有办法使用 Python 线程库?
- powershell - Powershell 产生不完整的结果。从加入 cmdlet 中删除显示的逗号