From 33b9ebb2019f9f084b350d3a33ee9770612d4509 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 13 Mar 2024 09:43:01 -0400 Subject: [PATCH] Ignore fields which are not included on the form (dynamic rendering) --- netbox/utilities/templatetags/form_helpers.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/netbox/utilities/templatetags/form_helpers.py b/netbox/utilities/templatetags/form_helpers.py index 47bbaafe8..c55a6b98b 100644 --- a/netbox/utilities/templatetags/form_helpers.py +++ b/netbox/utilities/templatetags/form_helpers.py @@ -54,17 +54,24 @@ def render_fieldset(form, fieldset, heading=None): """ rows = [] for item in fieldset: + + # Multiple fields side-by-side if type(item) is InlineFields: + fields = [ + form[name] for name in item.field_names if name in form.fields + ] rows.append( - ('inline', item.label, [form[name] for name in item.field_names]) + ('inline', item.label, fields) ) + + # Tabbed groups of fields elif type(item) is TabbedFieldGroups: tabs = [ { 'id': tab['id'], 'title': tab['title'], 'active': bool(form.initial.get(tab['fields'][0], False)), - 'fields': [form[name] for name in tab['fields']] + 'fields': [form[name] for name in tab['fields'] if name in form.fields] } for tab in item.tabs ] # If none of the tabs has been marked as active, activate the first one @@ -73,7 +80,9 @@ def render_fieldset(form, fieldset, heading=None): rows.append( ('tabs', None, tabs) ) - else: + + # A single form field + elif item in form.fields: rows.append( ('field', None, [form[item]]) )