diff --git a/apps/news/serializers.py b/apps/news/serializers.py index da3ea2df..846bc31a 100644 --- a/apps/news/serializers.py +++ b/apps/news/serializers.py @@ -179,7 +179,9 @@ class NewsBackOfficeBaseSerializer(NewsBaseSerializer): def validate(self, attrs): slugs = attrs.get('slugs', {}) - if models.News.objects.filter(slugs__values__contains=list(slugs.values())).exists(): + 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 @@ -262,7 +264,7 @@ class NewsFavoritesCreateSerializer(FavoritesCreateSerializer): def validate(self, attrs): """Overridden validate method""" # Check establishment object - news_qs = models.News.objects.filter(slug=self.slug) + news_qs = models.News.objects.filter(slugs__values__contains=[self.slug]) # Check establishment obj by slug from lookup_kwarg if not news_qs.exists(): diff --git a/apps/utils/views.py b/apps/utils/views.py index 379e501b..77f22032 100644 --- a/apps/utils/views.py +++ b/apps/utils/views.py @@ -125,8 +125,8 @@ class BaseCreateDestroyMixinView(generics.CreateAPIView, generics.DestroyAPIView lookup_field = 'slug' def get_base_object(self): - if isinstance(self._model, News): - get_object_or_404(self._model, slugs__values__contains=[self.kwargs['slug']]) + if 'slugs' in [f.name for f in self._model._meta.get_fields()]: # slugs instead of `slug` + return get_object_or_404(self._model, slugs__values__contains=[self.kwargs['slug']]) return get_object_or_404(self._model, slug=self.kwargs['slug']) def es_update_base_object(self):