mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-24 17:38:37 -06:00
Correct issue with filter_form not passing through render_table from django_tables2
This commit is contained in:
parent
8d65973c82
commit
92c3bbc9db
@ -180,8 +180,10 @@ class ObjectListView(BaseMultiObjectView, ActionsMixin, TableMixin):
|
|||||||
# * Otherwise set to None
|
# * Otherwise set to None
|
||||||
if self.filterset_form:
|
if self.filterset_form:
|
||||||
filterset_form = self.filterset_form(request.GET)
|
filterset_form = self.filterset_form(request.GET)
|
||||||
|
table.filterset_form = self.filterset_form(request.GET)
|
||||||
else:
|
else:
|
||||||
filterset_form = None
|
filterset_form = None
|
||||||
|
table.filterset_form = None
|
||||||
|
|
||||||
# If this is an HTMX request, return only the rendered table HTML
|
# If this is an HTMX request, return only the rendered table HTML
|
||||||
if htmx_partial(request):
|
if htmx_partial(request):
|
||||||
@ -196,7 +198,6 @@ class ObjectListView(BaseMultiObjectView, ActionsMixin, TableMixin):
|
|||||||
'model': model,
|
'model': model,
|
||||||
'actions': actions,
|
'actions': actions,
|
||||||
})
|
})
|
||||||
|
|
||||||
context = {
|
context = {
|
||||||
'model': model,
|
'model': model,
|
||||||
'table': table,
|
'table': table,
|
||||||
|
@ -68,7 +68,7 @@ Context:
|
|||||||
<div class="tab-pane show active" id="object-list" role="tabpanel" aria-labelledby="object-list-tab">
|
<div class="tab-pane show active" id="object-list" role="tabpanel" aria-labelledby="object-list-tab">
|
||||||
|
|
||||||
{# Applied filters #}
|
{# Applied filters #}
|
||||||
{% applied_filters model form_filter request.GET %}
|
{% applied_filters model filter_form request.GET %}
|
||||||
|
|
||||||
{# Object table controls #}
|
{# Object table controls #}
|
||||||
{% include 'inc/table_controls_htmx.html' with table_modal="ObjectTable_config" %}
|
{% include 'inc/table_controls_htmx.html' with table_modal="ObjectTable_config" %}
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
{% load render_table from django_tables2 %}
|
{% load render_table from django_tables2 %}
|
||||||
|
|
||||||
{# OOB Swaps to update various components #}
|
{# 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">
|
<div class="htmx-container table-responsive">
|
||||||
{% with preferences|get_key:"pagination.placement" as paginator_placement %}
|
{% with preferences|get_key:"pagination.placement" as paginator_placement %}
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
><i class="mdi mdi-close"></i></a>
|
><i class="mdi mdi-close"></i></a>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% 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="#"
|
<a href="#"
|
||||||
hx-get="{{ table.htmx_url }}{% querystring table.prefixed_order_by_field=column.order_by_alias.next %}"
|
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 %}
|
{% if not table.embedded %}hx-push-url="true"{% endif %}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{% load form_helpers %}
|
{% load form_helpers %}
|
||||||
{% if form_field %}
|
{% if field %}
|
||||||
<div class="column-filter dropdown">
|
<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>
|
<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">
|
<div class="dropdown-menu">
|
||||||
|
@ -34,7 +34,6 @@ def getfield(form, fieldname):
|
|||||||
|
|
||||||
@register.filter()
|
@register.filter()
|
||||||
def get_filter_field(form, fieldname):
|
def get_filter_field(form, fieldname):
|
||||||
|
|
||||||
return getfield(form, f'{fieldname}') or getfield(form, f'{fieldname}_id')
|
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')
|
@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
|
Render a single form field for table column filters from template
|
||||||
"""
|
"""
|
||||||
url = ""
|
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
|
# Handle filter forms
|
||||||
if table:
|
if table:
|
||||||
|
Loading…
Reference in New Issue
Block a user