Correct issue with filter_form not passing through render_table from django_tables2

This commit is contained in:
Daniel Sheppard 2025-01-20 14:21:41 -06:00
parent 8d65973c82
commit 92c3bbc9db
6 changed files with 17 additions and 7 deletions

View File

@ -180,8 +180,10 @@ class ObjectListView(BaseMultiObjectView, ActionsMixin, TableMixin):
# * Otherwise set to None
if self.filterset_form:
filterset_form = self.filterset_form(request.GET)
table.filterset_form = self.filterset_form(request.GET)
else:
filterset_form = None
table.filterset_form = None
# If this is an HTMX request, return only the rendered table HTML
if htmx_partial(request):
@ -196,7 +198,6 @@ class ObjectListView(BaseMultiObjectView, ActionsMixin, TableMixin):
'model': model,
'actions': actions,
})
context = {
'model': model,
'table': table,

View File

@ -68,7 +68,7 @@ Context:
<div class="tab-pane show active" id="object-list" role="tabpanel" aria-labelledby="object-list-tab">
{# Applied filters #}
{% applied_filters model form_filter request.GET %}
{% applied_filters model filter_form request.GET %}
{# Object table controls #}
{% include 'inc/table_controls_htmx.html' with table_modal="ObjectTable_config" %}

View File

@ -4,7 +4,7 @@
{% load render_table from django_tables2 %}
{# OOB Swaps to update various components #}
{% applied_filters model form_filter request.GET %}
{% applied_filters model filter_form request.GET %}
<div class="htmx-container table-responsive">
{% with preferences|get_key:"pagination.placement" as paginator_placement %}

View File

@ -21,7 +21,7 @@
><i class="mdi mdi-close"></i></a>
</div>
{% endif %}
{% render_table_filter_field form_field=filter_form|get_filter_field:column.name table=table request=request%}
{% render_table_filter_field column.name table request%}
<a href="#"
hx-get="{{ table.htmx_url }}{% querystring table.prefixed_order_by_field=column.order_by_alias.next %}"
{% if not table.embedded %}hx-push-url="true"{% endif %}

View File

@ -1,5 +1,5 @@
{% load form_helpers %}
{% if form_field %}
{% if field %}
<div class="column-filter dropdown">
<a href="#" class="dropdown-toggle" data-bs-toggle="dropdown" data-bs-auto-close="outside"><i class="mdi mdi-filter-settings"></i></a>
<div class="dropdown-menu">

View File

@ -34,7 +34,6 @@ def getfield(form, fieldname):
@register.filter()
def get_filter_field(form, fieldname):
return getfield(form, f'{fieldname}') or getfield(form, f'{fieldname}_id')
@ -127,11 +126,21 @@ def render_field(field, bulk_nullable=False, label=None):
@register.inclusion_tag('form_helpers/render_table_filter_field.html')
def render_table_filter_field(field, table, request):
def render_table_filter_field(fieldname, table, request):
"""
Render a single form field for table column filters from template
"""
url = ""
field = None
# Does this table have a filterset form?
if table.filterset_form is not None:
# Get the filterset field
field = get_filter_field(table.filterset_form, fieldname)
# Return if no filterset field
if field is None:
return {}
# Handle filter forms
if table: