Как отобразить значения столбцов модели django горизонтально на шаблоне django
Моя проблема заключается в отображении данных модели на шаблоне django горизонтально. У меня есть модель с именем "Main" с 3 колонками. Когда я отображаю на шаблоне, это выглядит так-
Я хочу отфильтровать его по категориям, что будет выглядеть следующим образом-
Main.objects.filter(category='food')
Моя цель - показать название категории на шаблоне с ценой горизонтально сбоку со знаками плюс. Это должно выглядеть примерно так-
food= 8+10+11
Я пробовал for...in loop как в шаблоне, так и в views.py и оба раза не получилось. Пробовал что-то вроде этого - 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>