diff --git a/apps/news/serializers.py b/apps/news/serializers.py index 3e337de0..bed24907 100644 --- a/apps/news/serializers.py +++ b/apps/news/serializers.py @@ -22,7 +22,9 @@ from utils.serializers import ( class AgendaSerializer(ProjectModelSerializer): start_datetime = serializers.DateTimeField() end_datetime = serializers.DateTimeField() - address = AddressBaseSerializer() + address = AddressBaseSerializer(read_only=True) + address_id = serializers.PrimaryKeyRelatedField(write_only=True, queryset=location_models.Address.objects.all(), + source='address') event_name_translated = TranslatedField() content_translated = TranslatedField() @@ -36,7 +38,8 @@ class AgendaSerializer(ProjectModelSerializer): 'end_datetime', 'address', 'content_translated', - 'event_name_translated' + 'event_name_translated', + 'address_id', ) @@ -248,11 +251,17 @@ class NewsBackOfficeBaseSerializer(NewsBaseSerializer): user = request.user validated_data['created_by'] = user - agenda = validated_data.get('agenda') - if agenda is not None and (agenda.event_name is None or agenda.content is None): - raise serializers.ValidationError({'agenda': _('Agenda is empty')}) + agenda_data = validated_data.pop('agenda') + agenda_data['address_id'] = agenda_data.pop('address').pk + agenda_serializer = AgendaSerializer(data=agenda_data) + agenda_serializer.is_valid(raise_exception=True) + agenda = agenda_serializer.save() - return super().create(validated_data) + instance = super().create(validated_data) + instance.agenda = agenda + instance.save() + + return instance def update(self, instance, validated_data): slugs = validated_data.get('slugs')