【发布时间】:2022-01-11 01:16:03
【问题描述】:
我的问题是在 django 模板上水平显示模型数据。我有一个名为“Main”的模型,有 3 列。当我在模板上显示时,它看起来像这样-
我想按如下所示的类别过滤它-
Main.objects.filter(category='food')
我的目标是在模板上显示类别名称,价格水平显示在带有加号的一侧。它应该看起来像这样-
food= 8+10+11
我在模板和views.py 上都尝试了for...in 循环,但都失败了。用 for 循环尝试了类似的方法 - print(f"{i.category}={i.price}+")。没用。
output+=f'{i.price}+' 带有 for 循环,将其保存在变量中并在模板上显示该变量。这些不同的组合都失败了。
由于 += 主要用于整数,我尝试使用 i.price 而不将其转换为字符串,失败。
我在这里找到的关于“在 Django 模板上水平显示模型数据”的大多数答案都是关于使用 css 并排显示表单元素,我知道该怎么做,而不是我的问题。
谁能指出我正确的方向?
这是我的models.py
class Main(models.Model):
name = models.CharField(max_length = 60, blank = True)
category = models.CharField(max_length = 60, blank = True)
price = models.CharField(max_length = 60, blank = True)
def __str__(self):
return self.name
views.py-
def products(request):
products = Main.objects.all()
context = {'products':products}
return render(request, 'myapp/index.html', context)
和 HTML 模板 -
<div class="card card-body">
<table class="table">
<tr>
<th>Product</th>
<th>Category</th>
<th>Price</th>
</tr>
{% for i in products %}
<tr>
<td>{{i.name}}</td>
<td>{{i.category}}</td>
<td>{{i.price}}</td>
</tr>
{% endfor %}
</table>
</div>
不是整个模板,但你明白了。非常基础。
【问题讨论】:
-
您能说说您尝试过的每件事是如何失败的吗?
-
我一直在调整代码以获得解决方案,所以没有全部保留。但绝对可以尝试重新创建它。但我得到了答案,可能的解决方案。会先尝试,可能会回到它。感谢您的评论。