Получить все значения из набора запросов с помощью шаблонов

#python #django

Вопрос:

Я пытаюсь получить все данные набора запросов (имена и количество) с помощью шаблонов.

views.py

 def get_expense(request):
    #expenses = list(Expense.objects.values())
    expenses = Expense.objects.values('name' , 'amount')
    
    if request.method == 'POST':
        form = ExpenseForm(request.POST, request.FILES)
        if form.is_valid():
            post = form.save(commit=False)
            post.save()

            #print(driver_text)
            print(type(expenses))
            return render(request, 'thanks.html', {'expenses':expenses}) #JsonResponse(expenses, safe=False) #

    else:
        form = ExpenseForm()
    return render(request, 'index.html',{'form':form})  
 

thanks.html:

 {{ expenses }}
 

Я пытаюсь получить все эти данные набора запросов в списке, но вместо этого я получаю:

 <QuerySet [{'name': 'Home Rent', 'amount': 8000.0}, {'name': 'hjvhjvhv', 'amount': 73.0}, {'name': 'tes', 'amount': 23.0}, {'name': 'dddd', 'amount': 34.0}, {'name': 'qqqqqqqq', 'amount': 56.0}, {'name': 'dddddddddd', 'amount': 34.0}, {'name': 'dddddddddxxxxxxxx', 'amount': 34.0}, {'name': 'dddddddddd', 'amount': 34.0}, {'name': 'dddddddddd', 'amount': 34.0}, {'name': 'dddddddddxxxxxxxx', 'amount': 56.0}, {'name': 'dddddddddxxxxxxxx', 'amount': 56.0}, {'name': 'dddddddddxxxxxxxx', 'amount': 56.0}, {'name': 'dddddddddxxxxxxxx', 'amount': 56.0}, {'name': 'dddddddddxxxxxxxx', 'amount': 56.0}, {'name': 'new', 'amount': 45.0}, {'name': 'new', 'amount': 45.0}, {'name': 'new', 'amount': 45.0}, {'name': 'new', 'amount': 45.0}, {'name': 'new', 'amount': 45.0}, {'name': 'hjvhjvhv', 'amount': 67.0}, '...(remaining elements truncated)...']>
 

Мне нужно только имя и сумма, указанные в списке, а не весь набор запросов.

Комментарии:

1. Покажите нам пример того, чего вы хотите ! Что-то вроде [{‘Аренда жилья’: 8000.0}, {…}, …] ?

2. Я хочу что-то вроде этого: name: 'Home Rent' amount: 8000.00 name: hjvhjvhv amount: 73.00 name: tes amount: 23.00 .... Till the last element.. все должно быть в отдельных строках.

3. У вас уже есть это в вашем примере, когда вы передаете его в шаблон, он ведет себя как диктант. В чем ваша проблема? Разве это не работает?

4. Вы пробовали expenses = Expense.objects.all() и в нем index.html вы можете использовать for loop как {{ expenses.name }}

Ответ №1:

В вашем файле .html пройдите по таким расходам, как этот :

 {% for expense in expenses %}
<div>
name: {{ expense.name }}, amount: {{ expense.amount }}
</div>    
{% endfor %}