Improvement in the expense_list view and html

This commit is contained in:
JKuijperM 2026-01-27 18:10:32 +01:00
parent b75efb1553
commit 9e2c4f17db
4 changed files with 92 additions and 29 deletions

View File

@ -31,6 +31,6 @@
</button>
</form>
<a href="{% url 'home' %}">Volver</a>
<a href="{% url 'expense_list' %}">Volver</a>
</body>
</html>

View File

@ -6,31 +6,67 @@
<body>
<h1>Mis gastos</h1>
<form method="get">
<label>
Año:
<input type="number" name="year" value="{{ selected_year }}">
</label>
<label>
Mes:
<input type="number" name="month" value="{{ selected_month }}">
</label>
<label>
Categoría:
<select name="category">
<option value="">Todas</option>
{% for cat in categories %}
<option value="{{ cat.id }}"
{% if selected_category == cat.id|stringformat:"s" %}selected{% endif%}
>
{{ cat.name }}
</option>
{% endfor %}
</select>
</label>
<button type="submit">Filtrar</button>
<a href="{% url 'expense_list' %}">Limpiar</a>
</form>
<br>
<a href="{% url 'expense_create' %}">Añadir gasto</a>
<table border="1">
<br>
<table>
<thead>
<tr>
<th>Fecha</th>
<th>Importe</th>
<th>Categoría</th>
<th>Cuenta</th>
<th>Acciones</th>
<th>Importe</th>
<th></th>
</tr>
</thead>
<tbody>
{% for expense in expenses %}
<tr>
<td>{{ expense.date }}</td>
<td>{{ expense.category.name }}</td>
<td>{{ expense.amount }}</td>
<td>{{ expense.category }}</td>
<td>{{ expense.account }}</td>
<td> <a href="{% url 'expense_edit' expense.pk %}">Editar</a></td>
<td> <a href="{% url 'expense_delete' expense.pk %}">Borrar</a></td>
<td>
<a href="{% url 'expense_edit' expense.id %}">Editar</a>
<a href="{% url 'expense_delete' expense.id %}">Eliminar</a>
</td>
</tr>
{% empty %}
<tr>
<td colspan="4">No hay gastos todavía</td>
<td colspan="4">No hay gastos</td>
</tr>
{% endfor %}
</tbody>
</table>
</body>
</html>

View File

@ -3,7 +3,7 @@ from django.urls import path
urlpatterns = [
path('', views.home, name='home'),
# path('', views.expense_list, name='expense_list'),
path('expenses/', views.expense_list, name='expense_list'),
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'),

View File

@ -1,5 +1,5 @@
from datetime import date
from .models import Expense
from .models import Category, Expense
from .forms import ExpenseForm
# from dateutli.relativedelta import relativedelta
@ -98,19 +98,46 @@ def home(request):
@login_required
def expense_list(request):
expenses = Expense.objects.filter(owner=request.user)
expenses = (
Expense.objects
.filter(owner=request.user)
.select_related('category')
.order_by('-date')
)
# Filters
year = request.GET.get('year')
month = request.GET.get('month')
category = request.GET.get('category')
if year:
expenses = expenses.filter(date__year=year)
if month:
expenses = expenses.filter(date__month=month)
if category:
expenses = expenses.filter(category_id=category)
categories = Category.objects.filter(owner=request.user).order_by('name')
return render (
request,
'expenses/expense_list.html',
{'expenses': expenses},
{
'expenses': expenses,
'categories': categories,
'selected_year': year,
'selected_month': month,
'selected_category': category,
},
)
@login_required
def expense_create(request):
if request.method == "POST":
form = ExpenseForm(request.POST or None, user=request.user)
form = ExpenseForm(request.POST, user=request.user)
if form.is_valid():
expense = form.save(commit=False)
expense.owner = request.user