diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 02efc9e95baf7ae9ad0d64cc8e284e7a8cc6f0a5..c6a799938a6ae94c2f76336e7c94a8827a7e2338 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -18,6 +18,7 @@ Fixed
 * When navigating from legacy to legacy page, the latter would reload once for no reason.
 * The oauth authorization page was not accessible when the service worker was active.
 * [Docker] Clear obsolete bundle parts when adding apps using ONBUILD
+* Extensible forms that used a subset of fields did not render properly
 
 `3.1.1`_ - 2023-07-01
 ---------------------
diff --git a/aleksis/core/mixins.py b/aleksis/core/mixins.py
index e734b40a8f7cf55b86e1f496cfb8e8cfe0099cfb..2eef69a460b0d4b768dc93742c5898af2ecf7f5c 100644
--- a/aleksis/core/mixins.py
+++ b/aleksis/core/mixins.py
@@ -27,7 +27,7 @@ from dynamic_preferences.types import FilePreference
 from guardian.admin import GuardedModelAdmin
 from guardian.core import ObjectPermissionChecker
 from jsonstore.fields import IntegerField, JSONFieldMixin
-from material.base import Layout, LayoutNode
+from material.base import Fieldset, Layout, LayoutNode
 from polymorphic.base import PolymorphicModelBase
 from polymorphic.managers import PolymorphicManager
 from polymorphic.models import PolymorphicModel
@@ -449,6 +449,20 @@ class ExtensibleForm(ModelForm, metaclass=_ExtensibleFormMetaclass):
         cls.base_layout.append(node)
         cls.layout = Layout(*cls.base_layout)
 
+        visit_nodes = [node]
+        while visit_nodes:
+            current_node = visit_nodes.pop()
+            if isinstance(current_node, Fieldset):
+                visit_nodes += node.elements
+            else:
+                field_name = (
+                    current_node if isinstance(current_node, str) else current_node.field_name
+                )
+                field = fields_for_model(cls._meta.model, [field_name])[field_name]
+                cls._meta.fields.append(field_name)
+                cls.base_fields[field_name] = field
+                setattr(cls, field_name, field)
+
 
 class BaseModelAdmin(GuardedModelAdmin, ObjectPermissionsModelAdmin):
     """A base class for ModelAdmin combining django-guardian and rules."""