如何在 Django 模板上水平显示 Django 模型列值
How to display django model column values horizontally on django template
我的问题是在 Django 模板上水平显示模型数据。我有一个名为“Main”的模型,有 3 列。当我在模板上显示时,它看起来像这样-
我想按类别过滤它,看起来像这样-
Main.objects.filter(category='food')
我的目标是在模板上显示类别名称,价格水平显示在带有加号的一侧。它应该看起来像这样-
food= 8+10+11
我在模板和 views.py 上都尝试了 for...in 循环,但都失败了。尝试过这样的事情- print(f"{i.category}={i.price}+") 和 for 循环。没用。
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>
不是整个模板,但您明白了。非常基础。
你可以这样做:
views.py:
def products(request):
foods = Main.objects.filter(category='food').values_lis('category', flat=True)
return render(request, 'myapp/index.html', {'foods': foods})
index.html:
<div class="card card-body">
<p> food:
<span>
{% for food in foods %}
{{ food }} {% if not forloop.last %}+{% endif %}
{% endfor %}
</span>
</p>
</div>
我的问题是在 Django 模板上水平显示模型数据。我有一个名为“Main”的模型,有 3 列。当我在模板上显示时,它看起来像这样-
我想按类别过滤它,看起来像这样-
Main.objects.filter(category='food')
我的目标是在模板上显示类别名称,价格水平显示在带有加号的一侧。它应该看起来像这样-
food= 8+10+11
我在模板和 views.py 上都尝试了 for...in 循环,但都失败了。尝试过这样的事情- print(f"{i.category}={i.price}+") 和 for 循环。没用。
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>
不是整个模板,但您明白了。非常基础。
你可以这样做:
views.py:
def products(request):
foods = Main.objects.filter(category='food').values_lis('category', flat=True)
return render(request, 'myapp/index.html', {'foods': foods})
index.html:
<div class="card card-body">
<p> food:
<span>
{% for food in foods %}
{{ food }} {% if not forloop.last %}+{% endif %}
{% endfor %}
</span>
</p>
</div>