diff --git a/program/views.py b/program/views.py
index b4931b20b89a9af795e9ae375d8dc4a0b87de120..e9d1d4b3ff61b792a655df3f6b28379cfeaa9129 100644
--- a/program/views.py
+++ b/program/views.py
@@ -1142,47 +1142,48 @@ class APIScheduleViewSet(viewsets.ModelViewSet):
 
         if update_fields.issubset(allowed):
             schedule = self.get_object()
+            request_schedule = self.request.data.get("schedule")
 
-            default_playlist_id = request.data.get("schedule").get("default_playlist_id")
-
-            if default_playlist_id == "":
-                # "clear" the default_playlist_id if the field has no value
-                schedule.default_playlist_id = None
-            else:
-                try:
-                    schedule.default_playlist_id = int(default_playlist_id)
-                except ValueError as e:
-                    data = {"last_date": e.args[0]}
-
-                    return Response(data, status=status.HTTP_400_BAD_REQUEST)
-
-            is_repetition = request.data.get("schedule").get("is_repetition")
-            if is_repetition == "true" or is_repetition == "1":
-                schedule.is_repetition = True
-            if is_repetition == "false" or is_repetition == "0":
-                schedule.is_repetition = False
-
-            last_date = request.data.get("schedule").get("last_date")
-            if last_date == "":
-                # "clear" the last_date if the field has no value
-                schedule.last_date = None
-            else:
-                try:
-                    last_date = date.fromisoformat(last_date)
-                except ValueError as e:
-                    data = {"last_date": e.args[0]}
-
-                    return Response(data, status=status.HTTP_400_BAD_REQUEST)
-                if schedule.last_date is None or schedule.last_date > last_date:
-                    schedule.last_date = last_date
-
-                    last_end = timezone.make_aware(datetime.combine(last_date, schedule.end_time))
-
-                    TimeSlot.objects.filter(schedule=schedule, start__gt=last_end).delete()
+            if "default_playlist_id" in request_schedule:
+                default_playlist_id = request_schedule.get("default_playlist_id")
+
+                if default_playlist_id == "":
+                    schedule.default_playlist_id = None
                 else:
-                    data = {"last_date": "This field cannot be updated to this date"}
+                    try:
+                        schedule.default_playlist_id = int(default_playlist_id)
+                    except ValueError as e:
+                        data = {"last_date": e.args[0]}
+
+                        return Response(data, status=status.HTTP_400_BAD_REQUEST)
+
+            if "is_repetition" in request_schedule:
+                schedule.is_repetition = bool(request_schedule.get("is_repetition"))
+
+            if "last_date" in request_schedule:
+                last_date = request_schedule.get("last_date")
+
+                if last_date == "":
+                    schedule.last_date = None
+                else:
+                    try:
+                        last_date = date.fromisoformat(last_date)
+                    except ValueError as e:
+                        data = {"last_date": e.args[0]}
+
+                        return Response(data, status=status.HTTP_400_BAD_REQUEST)
+                    if schedule.last_date is None or schedule.last_date > last_date:
+                        schedule.last_date = last_date
+
+                        last_end = timezone.make_aware(
+                            datetime.combine(last_date, schedule.end_time)
+                        )
+
+                        TimeSlot.objects.filter(schedule=schedule, start__gt=last_end).delete()
+                    else:
+                        data = {"last_date": "This field cannot be updated to this date"}
 
-                    return Response(data, status=status.HTTP_400_BAD_REQUEST)
+                        return Response(data, status=status.HTTP_400_BAD_REQUEST)
 
             schedule.save()
             serializer = ScheduleSerializer(schedule)