diff --git a/program/views.py b/program/views.py
index 7c852a674690617d41f38ea43c0d844c1aeab8d1..875368a29b4e9cbc3656ebaa30c3872d376554bb 100644
--- a/program/views.py
+++ b/program/views.py
@@ -315,9 +315,13 @@ class APIShowViewSet(DisabledObjectPermissionCheckMixin, viewsets.ModelViewSet):
         ):
             return Response(status=status.HTTP_401_UNAUTHORIZED)
 
+        partial = kwargs.get("partial", False)
         show = self.get_object()
         serializer = ShowSerializer(
-            show, data=request.data, context={"updated_by": request.user.username}
+            show,
+            data=request.data,
+            context={"updated_by": request.user.username},
+            partial=partial,
         )
 
         if serializer.is_valid():
@@ -329,6 +333,10 @@ class APIShowViewSet(DisabledObjectPermissionCheckMixin, viewsets.ModelViewSet):
 
         return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
 
+    def partial_update(self, request, *args, **kwargs):
+        kwargs["partial"] = True
+        return self.update(request, *args, **kwargs)
+
     def destroy(self, request, *args, **kwargs):
         """
         Only admins may delete shows.