diff --git a/program/serializers.py b/program/serializers.py index 764a3cd2a598ec607737b00ef36a7bf87bda2d2b..a5383bff21b2e531d97da4425282db95b7d60cfa 100644 --- a/program/serializers.py +++ b/program/serializers.py @@ -548,12 +548,24 @@ class ShowSerializer(serializers.HyperlinkedModelSerializer): instance.slug = validated_data.get("slug", instance.slug) instance.type = validated_data.get("type_id", instance.type) - instance.category.set(validated_data.get("category", [])) - instance.hosts.set(validated_data.get("hosts", [])) - instance.language.set(validated_data.get("language", [])) - instance.music_focus.set(validated_data.get("music_focus", [])) - instance.owners.set(validated_data.get("owners", [])) - instance.topic.set(validated_data.get("topic", [])) + # optional many-to-many in PATCH requests + if (category := validated_data.get("category")) is not None: + instance.category.set(category) + + if (hosts := validated_data.get("hosts")) is not None: + instance.hosts.set(hosts) + + if (language := validated_data.get("language")) is not None: + instance.language.set(language) + + if (music_focus := validated_data.get("music_focus")) is not None: + instance.music_focus.set(music_focus) + + if (owners := validated_data.get("owners")) is not None: + instance.owners.set(owners) + + if (topic := validated_data.get("topic")) is not None: + instance.topic.set(topic) if links_data := validated_data.get("links"): instance = delete_links(instance) @@ -892,9 +904,15 @@ class NoteSerializer(serializers.ModelSerializer): instance.tags = validated_data.get("tags", instance.tags) instance.title = validated_data.get("title", instance.title) - instance.contributors.set(validated_data.get("contributors", [])) - instance.language.set(validated_data.get("language", [])) - instance.topic.set(validated_data.get("topic", [])) + # optional many-to-many in PATCH requests + if (contributors := validated_data.get("contributors")) is not None: + instance.contributors.set(contributors) + + if (language := validated_data.get("language")) is not None: + instance.language.set(language) + + if (topic := validated_data.get("topic")) is not None: + instance.topic.set(topic) if cba_id := validated_data.get("cba_id"): if audio_url := get_audio_url(cba_id):