Просмотр исходного кода

Ignore fields which are not included on the form (dynamic rendering)

Jeremy Stretch 1 год назад
Родитель
Сommit
33b9ebb201
1 измененных файлов с 12 добавлено и 3 удалено
  1. 12 3
      netbox/utilities/templatetags/form_helpers.py

+ 12 - 3
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]])
             )