Fix tom-select errors related to field id. Break out render_field function for column filters

This commit is contained in:
Daniel Sheppard 2024-02-13 15:23:14 -06:00
parent 0309796bbb
commit 84151cbc1a
2 changed files with 26 additions and 11 deletions

View File

@ -5,7 +5,7 @@
<i class="mdi mdi-filter-settings" style="font-size: 1.25rem;"> </i> <i class="mdi mdi-filter-settings" style="font-size: 1.25rem;"> </i>
</a> </a>
<div class="dropdown-menu"> <div class="dropdown-menu">
{% render_field form_field table=table request=request %} {% render_table_filter_field form_field table=table request=request %}
</div> </div>
</div> </div>
{% endif %} {% endif %}

View File

@ -58,10 +58,23 @@ def widget_type(field):
# #
@register.inclusion_tag('form_helpers/render_field.html') @register.inclusion_tag('form_helpers/render_field.html')
def render_field(field, bulk_nullable=False, label=None, table=None, request=None): def render_field(field, bulk_nullable=False, label=None):
""" """
Render a single form field from template Render a single form field from template
""" """
return {
'field': field,
'label': label or field.label,
'bulk_nullable': bulk_nullable,
}
@register.inclusion_tag('form_helpers/render_field.html')
def render_table_filter_field(field, table=None, request=None):
"""
Render a single form field for table column filters from template
"""
url = "" url = ""
# Handle filter forms # Handle filter forms
@ -74,18 +87,20 @@ def render_field(field, bulk_nullable=False, label=None, table=None, request=Non
elif request: elif request:
url = querystring(request, **kwargs) url = querystring(request, **kwargs)
# Set HTMX args # Set HTMX args
if hasattr(field.field, 'widget'):
field.field.widget.attrs.update({ if hasattr(field.field, 'widget'):
'hx-get': url if url else '#', field.field.widget.attrs.update({
'hx-push-url': "true", 'id': f'table_filter_id_{field.name}',
'hx-target': '#object_list', 'hx-get': url if url else '#',
'hx-trigger': 'hidden.bs.dropdown from:closest .dropdown' 'hx-push-url': "true",
}) 'hx-target': '#object_list',
'hx-trigger': 'hidden.bs.dropdown from:closest .dropdown'
})
return { return {
'field': field, 'field': field,
'label': label or field.label if not table else None, 'label': None,
'bulk_nullable': bulk_nullable, 'bulk_nullable': False,
} }