diff --git a/apps/news/serializers.py b/apps/news/serializers.py index 846bc31a..f22c7129 100644 --- a/apps/news/serializers.py +++ b/apps/news/serializers.py @@ -177,13 +177,23 @@ class NewsBackOfficeBaseSerializer(NewsBaseSerializer): 'backoffice_title': {'allow_null': False}, } - def validate(self, attrs): - slugs = attrs.get('slugs', {}) - if models.News.objects.filter( - slugs__values__contains=list(slugs.values()) - ).exclude(id=attrs.get('id', 0)).exists(): - raise serializers.ValidationError({'slugs': _('News with this slug already exists.')}) - return attrs + def create(self, validated_data): + slugs = validated_data.get('slugs') + if slugs: + if models.News.objects.filter( + slugs__values__contains=list(slugs.values()) + ).exists(): + raise serializers.ValidationError({'slugs': _('News with this slug already exists.')}) + return super().create(validated_data) + + def update(self, instance, validated_data): + slugs = validated_data.get('slugs') + if slugs: + if models.News.objects.filter( + slugs__values__contains=list(slugs.values()) + ).exclude(pk=instance.pk).exists(): + raise serializers.ValidationError({'slugs': _('News with this slug already exists.')}) + return super().update(instance, validated_data) class NewsBackOfficeDetailSerializer(NewsBackOfficeBaseSerializer,