From 907a9365e1b73abaa0f55f1cf14ec6fcd0ef22d3 Mon Sep 17 00:00:00 2001 From: Kuroshini Date: Wed, 11 Dec 2019 12:14:23 +0300 Subject: [PATCH] fix multislug news update --- apps/news/serializers.py | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) 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,