Как вы решаете проблему столкновения уникальных полей в django?
У меня есть модель, которая выглядит следующим образом:
class Foo(models.Model):
unique_field = models.URLField(unique=True)
another_field = models.TextField()
# etc...
и соответствующий ему ViewSet выглядит следующим образом (привязан к /foo/):
class FooViewSet(
viewsets.GenericViewSet,
mixins.ListModelMixin,
mixins.CreateModelMixin,
mixins.DestroyModelMixin,
):
queryset = Foo.objects.all()
serializer_class = FooSerializer
Когда я делаю POST запрос к /foo/, если нет столкновения, я просто хочу поведение по умолчанию (создать новый ряд в базе данных и вернуть его сериализованную форму в виде json-блоба).
Проблема в том, что когда происходит существующее столкновение, сервер просто выбрасывает ошибку. Я бы предпочел, чтобы он возвращал json blob для существующих данных, а не выкидывал ошибку. Или, по крайней мере, возвращать какую-то описательную ошибку.
Есть ли способ добиться такого поведения без ручного переопределения create()?