From d32a66a44dfeaf14b96ad5bb96c1fd1dbc86dd38 Mon Sep 17 00:00:00 2001 From: winkidney Date: Sat, 7 Dec 2019 15:33:06 +0800 Subject: [PATCH] Fix: Add unique-together validation for board-rename --- core/serializers.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/core/serializers.py b/core/serializers.py index 12fe989..6bce851 100644 --- a/core/serializers.py +++ b/core/serializers.py @@ -1,6 +1,7 @@ from django.conf import settings from rest_framework import serializers from rest_framework.exceptions import ValidationError +from rest_framework.validators import UniqueTogetherValidator from taggit.models import Tag from core.models import Image, Board @@ -194,6 +195,13 @@ class BoardSerializer(serializers.HyperlinkedModelSerializer): def update(self, instance: Board, validated_data): pins_to_add = validated_data.pop("pins_to_add", []) pins_to_remove = validated_data.pop("pins_to_remove", []) + if Board.objects.filter( + submitter=instance.submitter, + name=validated_data.get('name', None) + ).exists(): + raise ValidationError( + detail={'name': "Board with this name already exists"} + ) instance = super(BoardSerializer, self).update(instance, validated_data) changed = False if pins_to_add: