diff --git a/aleksis/core/frontend/components/generic/dialogs/MobileFullscreenDialog.vue b/aleksis/core/frontend/components/generic/dialogs/MobileFullscreenDialog.vue
index 91df04e68bfff958105a377d1049211497a81a5e..f85c0acfdb730a2f21ffec4fc6e53e01a76f5be1 100644
--- a/aleksis/core/frontend/components/generic/dialogs/MobileFullscreenDialog.vue
+++ b/aleksis/core/frontend/components/generic/dialogs/MobileFullscreenDialog.vue
@@ -4,7 +4,7 @@
     v-on="$listeners"
     :fullscreen="$vuetify.breakpoint.xs"
     :hide-overlay="$vuetify.breakpoint.xs"
-    max-width="600px"
+    :max-width="maxWidth"
   >
     <template #activator="activator">
       <slot name="activator" v-bind="activator"></slot>
@@ -34,6 +34,13 @@
 export default {
   name: "MobileFullscreenDialog",
   extends: "v-dialog",
+  props: {
+    maxWidth: {
+      type: String | Number,
+      required: false,
+      default: "600px",
+    }
+  }
 };
 </script>
 
diff --git a/aleksis/core/frontend/components/generic/forms/ForeignKeyField.vue b/aleksis/core/frontend/components/generic/forms/ForeignKeyField.vue
index f2273309278f926e124c2ddfa177b6595f45878a..b2418284a8cad9c38750119bb3952c008c6f6dd5 100644
--- a/aleksis/core/frontend/components/generic/forms/ForeignKeyField.vue
+++ b/aleksis/core/frontend/components/generic/forms/ForeignKeyField.vue
@@ -7,6 +7,9 @@
     :item-text="itemName"
     class="fc-my-auto"
   >
+    <template #item="item">
+      <slot name="item" v-bind="item" />
+    </template>
     <template #append-outer>
       <v-btn icon @click="menu = true">
         <v-icon>$plus</v-icon>
diff --git a/aleksis/core/schema/base.py b/aleksis/core/schema/base.py
index 198217379e257e427aa1332ae7bce7734d139c18..302450498728a3435615fb8821fde09a80b3a81b 100644
--- a/aleksis/core/schema/base.py
+++ b/aleksis/core/schema/base.py
@@ -77,6 +77,16 @@ class PermissionsTypeMixin:
         return info.context.user.has_perm(perm, root)
 
 
+class OptimisticResponseTypeMixin:
+    """Mixin for using OptimisticResponse in the frontend.
+
+    Simply adds a field called `is_optimistic` that is always false,
+    but should be set to true by the frontend
+    """
+
+    is_optimistic = graphene.Boolean(default_value=False)
+
+
 class PermissionBatchPatchMixin:
     class Meta:
         login_required = True
diff --git a/aleksis/core/schema/school_term.py b/aleksis/core/schema/school_term.py
index 798d1c62eb960d2c850a918345cbc03252a88820..48cc92a353accefe875f49fa25cd3e0b2940305b 100644
--- a/aleksis/core/schema/school_term.py
+++ b/aleksis/core/schema/school_term.py
@@ -39,6 +39,7 @@ class SchoolTermCreateMutation(DjangoCreateMutation):
     class Meta:
         model = SchoolTerm
         permissions = ("core.create_school_term",)  # FIXME
+        exclude = ("managed_by_app_label",)
 
     @classmethod
     def validate(cls, root, info, input):  # noqa