如何在 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>