Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork7k
Closed
Labels
Milestone
Description
Checklist
- I have verified that that issue exists against the
masterbranch of Django REST framework. - I have searched for similar issues in both open and closed tickets and cannot find a duplicate.
- This is not a usage question. (Those should be directed to thediscussion group instead.)
- This cannot be dealt with as a third party library. (We prefer new functionality to bein the form of third party libraries where possible.)
- I have reduced the issue to the simplest possible case.
- I have included a failing test as a pull request. (If you are unable to do so we can still accept the issue.)
Steps to reproduce
Lets take a model
MY_CHOICES= ( ('choice1',_('choice 1')), ('choice2',_('choice 1')),)classPoll(models.Model):form_name=models.CharField('name',max_length=254,unique=True,choices=MY_CHOICES)classPollSerializer(serializers.ModelSerializer):classMeta:model=Pollfields='__all__'classPollCreateView(generics.CreateAPIView):serializer_class=PollSerializer
Then making a POST request with{"form_name": "choice1"} first time returns{ "id": 1, "form_name": "choice1" }
then by making same request again with data{"form_name": "choice1"} instead of giving valid error response, django's IntegrityError exception is thrown.
This behaviour is only coming if models.CharField is used with choices and unique=True and not when models.CharField is used without choices
Expected behavior
Valid error response should be returned instead of throwing django's IntegrityError exception
like{ "form_name": [ "poll with this name already exists." ] }
Actual behavior
Throwing django's IntegrityError exception when models.CharField is used with choices and unique=True