diff --git a/program/serializers.py b/program/serializers.py
index 97ceb541f5b76e79970bca42032799003c048a09..ea70b69b4e178382c129e0b673a45e99eda6d25f 100644
--- a/program/serializers.py
+++ b/program/serializers.py
@@ -736,13 +736,6 @@ class ScheduleDryRunResponseSerializer(serializers.Serializer):
 
 
 class TimeSlotSerializer(serializers.ModelSerializer):
-    language_ids = serializers.PrimaryKeyRelatedField(
-        allow_null=True,
-        many=True,
-        queryset=Language.objects.all(),
-        required=False,
-        source="language",
-    )
     note_id = serializers.SerializerMethodField()
     show_id = serializers.SerializerMethodField()
     schedule_id = serializers.PrimaryKeyRelatedField(
@@ -753,9 +746,6 @@ class TimeSlotSerializer(serializers.ModelSerializer):
         queryset=TimeSlot.objects.all(),
         required=False,
     )
-    topic_ids = serializers.PrimaryKeyRelatedField(
-        allow_null=True, many=True, queryset=Topic.objects.all(), required=False, source="topic"
-    )
 
     class Meta:
         model = TimeSlot
@@ -768,11 +758,9 @@ class TimeSlotSerializer(serializers.ModelSerializer):
             "start",
         )
         fields = (
-            "language_ids",
             "memo",
             "playlist_id",
             "repetition_of_id",
-            "topic_ids",
         ) + read_only_fields
 
     @staticmethod
@@ -791,11 +779,6 @@ class TimeSlotSerializer(serializers.ModelSerializer):
         instance.repetition_of = validated_data.get("repetition_of_id", instance.repetition_of)
         instance.playlist_id = validated_data.get("playlist_id", instance.playlist_id)
 
-        if language := validated_data.get("language", []):
-            instance.language.set(language)
-
-        if topic := validated_data.get("topic", []):
-            instance.topic.set(topic)
 
         instance.save()
         return instance
@@ -822,12 +805,22 @@ class NoteSerializer(serializers.ModelSerializer):
     image_id = serializers.PrimaryKeyRelatedField(
         queryset=Image.objects.all(), required=False, allow_null=True
     )
+    language_ids = serializers.PrimaryKeyRelatedField(
+        allow_null=True,
+        many=True,
+        queryset=Language.objects.all(),
+        required=False,
+        source="language",
+    )
     links = NoteLinkSerializer(many=True, required=False)
     playlist_id = serializers.IntegerField(required=False)
     tags = JSONSchemaField(tags_json_schema, required=False)
     timeslot_id = serializers.PrimaryKeyRelatedField(
         queryset=TimeSlot.objects.all(), required=False
     )
+    topic_ids = serializers.PrimaryKeyRelatedField(
+        allow_null=True, many=True, queryset=Topic.objects.all(), required=False, source="topic"
+    )
 
     class Meta:
         model = Note
@@ -844,6 +837,7 @@ class NoteSerializer(serializers.ModelSerializer):
             "contributor_ids",
             "id",
             "image_id",
+            "language_ids",
             "links",
             "owner_id",
             "playlist_id",
@@ -852,6 +846,7 @@ class NoteSerializer(serializers.ModelSerializer):
             "tags",
             "timeslot_id",
             "title",
+            "topic_ids",
         ) + read_only_fields
 
     def create(self, validated_data):
@@ -867,8 +862,11 @@ class NoteSerializer(serializers.ModelSerializer):
             timeslot_pk = TimeSlot.objects.get(pk=self.context["request"].path.split("/")[-3])
             validated_data["timeslot"] = validated_data.pop("timeslot_id", timeslot_pk)
 
-        show_owners = validated_data["timeslot"].schedule.show.owners.values_list("id", flat=True)
-        contributors = validated_data.pop("contributors", show_owners)
+        show = validated_data["timeslot"].schedule.show
+
+        contributors = validated_data.pop("contributors", show.owners.values_list("id", flat=True))
+        language = validated_data.pop("language", show.language.values_list("id", flat=True))
+        topic = validated_data.pop("topic", show.topic.values_list("id", flat=True))
 
         # optional
         validated_data["image"] = validated_data.pop("image_id", None)
@@ -881,6 +879,8 @@ class NoteSerializer(serializers.ModelSerializer):
         )
 
         note.contributors.set(contributors)
+        note.language.set(language)
+        note.topic.set(topic)
 
         if cba_id := validated_data.get("cba_id"):
             if audio_url := get_audio_url(cba_id):
@@ -918,6 +918,12 @@ class NoteSerializer(serializers.ModelSerializer):
             for link_data in links_data:
                 NoteLink.objects.create(note=instance, **link_data)
 
+        if language := validated_data.get("language", []):
+            instance.language.set(language)
+
+        if topic := validated_data.get("topic", []):
+            instance.topic.set(topic)
+
         instance.updated_by = self.context.get("request").user.username
 
         instance.save()