Create a dashboard view test

This commit is contained in:
JKuijperM 2026-01-13 15:24:46 +01:00
parent acbd8fa65e
commit ccc48bd50d
3 changed files with 27 additions and 2 deletions

View File

@ -0,0 +1,11 @@
<!DOCTYPE html>
<h1>Dashboard</h1>
<h2>Gastos por categoría</h2>
<ul>
{% for row in by_category %}
<li>{{ row.category__name}} → {{row.total}}</li>
{% empty %}
<li>No hay datos</li>
{% endfor %}
</ul>

View File

@ -6,4 +6,5 @@ urlpatterns = [
path('new/', views.expense_create, name='expense_create'),
path('<int:pk>/edit/', views.expense_edit, name='expense_edit'),
path('<int:pk>/delete/', views.expense_delete, name='expense_delete'),
path('dashboard/', views.dashboard, name='dashboard'),
]

View File

@ -1,10 +1,11 @@
from .models import Expense
from .forms import ExpenseForm
from django.db.models import Sum
from django.contrib.auth import login
from django.utils.ipv6 import is_valid_ipv6_address
from django.shortcuts import get_object_or_404, render, redirect
from django.contrib.auth.decorators import login_required
from django.shortcuts import get_object_or_404, render, redirect
@login_required
def expense_list(request):
@ -75,4 +76,16 @@ def expense_delete(request, pk):
request,
'expenses/expense_confirm_delete.html',
{'expense': expense},
)
)
@login_required
def dashboard(request):
expenses = Expense.objects.filter(owner=request.user)
by_category = (expenses.values('category__name').annotate(total=Sum('amount')))
return render(request, 'expenses/dashboard.html', {'by_category': by_category})