python - Django:基于类的视图的extra_content不显示任何数据
问题描述
我正在尝试创建一个显示“案例”中所有项目的网站,并且在顶部我想显示“案例”中所有项目的总值。要获得这个数字,您将获得箱子中的所有物品,将它们的价值和数量相乘,然后将它们全部加起来。但是,当我将其传递给我时,extra_content
什么都没有显示。任何帮助都是极好的!
我的观点:
class CaseHome(ListView):
model = CaseItem
template_name = 'mycase/casehome.html'
total = CaseItem.objects.all().aggregate(total=Sum(F('Item_Price')*F('Item_Quantity')))['total']
extra_content = {'my_total': total}
我的模型:
class CaseItem(models.Model):
Item_Title = models.CharField(max_length=200)
Item_Price = models.DecimalField(default=0, max_digits=10, decimal_places=2)
Item_Quantity = models.DecimalField(default=0, max_digits=10, decimal_places=2)
def __str__(self):
return self.Item_Title + ' | ' + str(self.Item_Quantity) + ' * $' + str(self.Item_Price)
def get_absolute_url(self):
return reverse('home')
我的模板:
{% block content %}
<p>{{my_total}}</p>
{% for item in object_list %}
<div class="container">
<div class="item" style="border: 2px solid black; margin: 3px; padding: 3px">
<a href="{% url 'item-editor' item.pk %} "><h3 style="display: inline-block">{{ item.Item_Title }}</h3><h5 style="float: right"><span class="badge bg-info text-dark">Quantity:{{ item.Item_Quantity}}</span> <span class="badge bg-info text-dark" style="margin-left: 15px;"> Price: ${{item.Item_Price}} </span>
</div>
</h5></a>
<hr>
</div>
{% endfor %}
{% endblock %}
解决方案
您应该改写get_context_data
。在类上定义total
意味着当数据更改时它不会更新它只在应用程序启动时执行一次,您应该在每个请求上执行查询以获取最新数据
class CaseHome(ListView):
model = CaseItem
template_name = 'mycase/casehome.html'
def get_context_data(self, *args, **kwargs):
context = super().get_context_data(*args, **kwargs)
context['my_total'] = CaseItem.objects.all().aggregate(total=Sum(F('Item_Price')*F('Item_Quantity')))['total']
return context
推荐阅读
- r - R 如果三个或更多值是 NA,则删除行
- .net - 当流调用循环很大时,Grpc 双向流被对等端终止?
- php - 使用 livewire 从 URL 获取类型参数值
- reactjs - React路由器:使用url参数重定向?
- docker - nginx server block + docker,前后如何通信
- java - 责任链 lambda 函数
- firebase - 事务中单个文档的多次更新是否会在 Firestore 中为每个更新分别产生写入成本
- django - 社交登录后将 Django 重定向到自定义页面,然后使用 ?next 重定向到上一页
- javascript - iPhone Chrome 在过滤数组时无法读取 Var 的字符串值
- json - 在 GetX Flutter 中使用模型来解析 JSON 数据是一种好习惯吗?