【问题标题】:How to display django model column values horizontally on django template如何在 django 模板上水平显示 django 模型列值
【发布时间】: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>

不是整个模板,但你明白了。非常基础。

【问题讨论】:

  • 您能说说您尝试过的每件事是如何失败的吗?
  • 我一直在调整代码以获得解决方案,所以没有全部保留。但绝对可以尝试重新创建它。但我得到了答案,可能的解决方案。会先尝试,可能会回到它。感谢您的评论。

标签: django templates model


【解决方案1】:

你可以这样做:

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>

【讨论】:

  • 我无法独自思考。非常感谢您的意见。明天试试看是否有效。
  • 这正是我想要的。非常感谢您的回答。
猜你喜欢
  • 2017-11-13
  • 1970-01-01
  • 2019-09-03
  • 2018-12-12
  • 1970-01-01
  • 1970-01-01
  • 2019-10-09
  • 2016-05-06
  • 1970-01-01
相关资源
最近更新 更多