diff --git a/program/serializers.py b/program/serializers.py
index c4006ef51c500edc563a0dd8cb78ae3450882577..9a8cded7756ae79bc0fd238bdfe0d66a26a8a015 100644
--- a/program/serializers.py
+++ b/program/serializers.py
@@ -717,6 +717,13 @@ 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(
@@ -727,6 +734,9 @@ 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
@@ -739,9 +749,11 @@ class TimeSlotSerializer(serializers.ModelSerializer):
             "start",
         )
         fields = (
+            "language_ids",
             "memo",
             "playlist_id",
             "repetition_of_id",
+            "topic_ids",
         ) + read_only_fields
 
     @staticmethod
@@ -759,6 +771,10 @@ class TimeSlotSerializer(serializers.ModelSerializer):
         instance.memo = validated_data.get("memo", instance.memo)
         instance.repetition_of = validated_data.get("repetition_of_id", instance.repetition_of)
         instance.playlist_id = validated_data.get("playlist_id", instance.playlist_id)
+
+        instance.language.set(validated_data.get("language", []))
+        instance.topic.set(validated_data.get("topic", []))
+
         instance.save()
         return instance