У меня есть таблица, в которой составной уникальный индекс установлен как на уровне БД, так и на уровне Django. Первый вопрос: как мне узнать в DRF, что IntegrityError поднялся именно из-за этого уникального нарушения ограничения?
Я наткнулся на фрагмент кода, подобный следующему:
class TestModel(models.Model):
class Meta:
managed = False
db_table = 'test_table'
unique_together = ('fieldA','fieldB',)
class TestSerializer(serializers.ModelSerializer):
def create(self, request, *args, **kwargs):
try:
return super().create(request, *args, **kwargs)
except IntegrityError as err:
if err.__cause__.pgcode == errorcodes.UNIQUE_VIOLATION:
# Do something special
. ... но это дает, и, кроме того, я чувствую, что это не самый подходящий способ для достижения цели. Любые идеи?
И второй вопрос: как мне проверить это ограничение? Как должно выглядеть условие if в методе validate? И это должно быть сделано в методе проверки или в другом месте?