diff --git a/program/serializers.py b/program/serializers.py
index bf44de1c521d6b280208824988558ffc0c3e9532..c1c8496269044f7bba3dea400431517c2b23ca99 100644
--- a/program/serializers.py
+++ b/program/serializers.py
@@ -787,7 +787,12 @@ class NoteSerializer(serializers.ModelSerializer):
         contributors = validated_data.pop("contributors", [])
 
         # required
-        validated_data["timeslot"] = validated_data.pop("timeslot_id")
+        if "timeslot_id" in validated_data:
+            validated_data["timeslot"] = validated_data.pop("timeslot_id")
+        else:
+            # TODO: Once we remove nested routes, this hack should be removed
+            timeslot_pk = TimeSlot.objects.get(pk=self.context["request"].path.split("/")[-3])
+            validated_data["timeslot"] = validated_data.pop("timeslot_id", timeslot_pk)
 
         # optional
         validated_data["image"] = validated_data.pop("image_id", None)
@@ -826,10 +831,10 @@ class NoteSerializer(serializers.ModelSerializer):
 
         instance.cba_id = validated_data.get("cba_id", instance.cba_id)
         instance.content = validated_data.get("content", instance.content)
-        instance.image = validated_data.get("image", instance.image_id)
+        instance.image = validated_data.get("image_id", instance.image)
         instance.slug = validated_data.get("slug", instance.slug)
         instance.summary = validated_data.get("summary", instance.summary)
-        instance.timeslot = validated_data.get("timeslot", instance.timeslot_id)
+        instance.timeslot = validated_data.get("timeslot_id", instance.timeslot)
         instance.title = validated_data.get("title", instance.title)
 
         instance.contributors.set(validated_data.get("contributors", instance.contributors))