Reputation: 693
Beginner alert. I am using ListCreateAPIView for listing and creating purposes. Whenever I create through an api it returns responses in json format.
{"id":16,"title":"yyyyyyyy","destination_place":[1]}
But if there are errors like duplicate slug or title it returns errors like this
IntegrityError at /api/holidays/
duplicate key value violates unique constraint "holidays_holiday_slug_key"
DETAIL: Key (slug)=(yyyyyyyy) already exists.
Is there any way to return these errors in json format. My views
class HolidayList(ListCreateAPIView):
queryset = Holiday.objects.all()
serializer_class = HolidaySerializer
permission_classes = [IsAdminUser, IsAuthenticated]
Model
class Holiday(models.Model):
title = models.CharField(verbose_name=_("Title"), max_length=255)
slug = models.SlugField(unique=True)
destination_place = models.ManyToManyField(to='places.Place',related_name='destination_place',null=True,blank=True)
Upvotes: 1
Views: 252
Reputation: 3664
In HolidaySerializer
, add UniqueValidator
on slug
field.
Example:
from rest_framework.validators import UniqueValidator
class HolidaySerializer(serializers.ModelSerializer):
slug = serializers.SlugField(
max_length=255,
validators=[UniqueValidator(queryset=Holiday.objects.all())])
class Meta:
model = Holiday
fields = ('id', 'title', 'slug', 'destination_place', )
This will return back the unique constraint error in the JSON format.
You can customize the message. Look at the docs.
Upvotes: 1