Filtrado y Búsqueda de Transacciones

Guía de filtrado y búsqueda de transacciones en Django: filtros por fecha, categoría y tipo, búsqueda en notas, resúmenes y agrupaciones, con formulario GET y rendimiento.

viernes, 12 de septiembre de 2025 • 2 min de lectura • Equip Q2BSTUDIO

Inteligencia-Artificial-

Filtrado y Búsqueda de Transacciones

En este artículo explicamos cómo añadir opciones de filtro a la lista de transacciones para que los usuarios puedan filtrar por rango de fechas, por categoría, por tipo de transacción y buscar en las notas.

1 Actualizar la vista para aceptar parámetros GET. En la vista recupera parámetros como category, transaction_type, start_date, end_date y search desde request.GET. Obtén el queryset inicial con Transaction.objects.select_related(category).order_by(-date) y aplica filtros condicionales si existen los parámetros. Por ejemplo aplica transactions = transactions.filter(category_id=category_id) y transactions = transactions.filter(transaction_type=transaction_type) y transactions = transactions.filter(date__gte=start_date) y transactions = transactions.filter(date__lte=end_date) y transactions = transactions.filter(notes__icontains=search_query). Calcula resúmenes usando Sum para income y expenses y balance = income - expenses. También puedes agrupar por categoría con transactions.values(category__name).annotate(total=Sum(amount)). No olvides enviar la lista de categorías para rellenar el desplegable.

2 Actualizar la plantilla y añadir el formulario de filtros. Coloca un formulario GET encima de la lista de transacciones. Ejemplo de estructura del formulario como texto: <form method=get> <label>Category: <select name=category> <option value=>All</option> {% for cat in categories %} <option value={{ cat.id }} {% if selected_category == cat.id %}selected{% endif %}>{{ cat.name }}</option> {% endfor %} </select> </label> <label>Type: <select name=transaction_type> <option value=>All</option> <option value=IN {% if selected_type == IN %}selected{% endif %}>Income</option> <option value=EX {% if selected_type == EX %}selected{% endif %}>Expense</option> </select> </label> <label>Start Date:<input type=date name=start_date value={{ start_date }}></label> <label>End Date:<input type=date name=end_date value={{ end_date }}></label> <label>Search Notes:<input type=text name=search value={{ search_query }}></label> <button type=submit>Filter</button> <a href={% url transaction_list %}>Clear</a> </form>

Consejos adicionales: valida fechas y parámetros, pagina el queryset si hay muchas transacciones y mantén las opciones seleccionadas en el formulario para mejorar la experiencia de usuario. Para búsquedas más avanzadas considera usar índices full text o motores de búsqueda si la base de datos lo soporta. Si necesitas rendimiento y escalabilidad, combina filtros en la capa de consulta con paginación y caching.

Sobre Q2BSTUDIO: Somos Q2BSTUDIO, empresa de desarrollo de software y aplicaciones a medida, especialistas en inteligencia artificial, ciberseguridad y servicios cloud aws y azure. Diseñamos soluciones personalizadas que incluyen aplicaciones a medida y software a medida, servicios de inteligencia de negocio y power bi, automatización de procesos y agentes IA para empresas. Si necesitas una app a medida visita aplicaciones a medida y software a medida y si te interesa aplicar inteligencia artificial en tu organización conoce nuestras propuestas en inteligencia artificial para empresas. También ofrecemos servicios de ciberseguridad y pentesting, consultoría en cloud aws y azure y soluciones de business intelligence con power bi para mejorar la toma de decisiones.

Palabras clave incluidas: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi.

UNA PAUSA?

Juga una estona abans de marxar

ELS NOSTRES SERVEIS

Com et podem ajudar

Tens un projecte en ment?

Explica'ns la teva visió i la convertim en una solució de programari. Sigui quin sigui l'abast, fem realitat la teva idea.