Как обрабатывать ошибки ограничений, такие как unique или not null, из базы данных в Django
У меня есть операция записи, которая добавляет запись в модель rider. В этом случае rider_code уникален. Теперь 1 способ - сначала проверить, существует ли какая-либо запись с этим rider_code, а затем вернуть ошибку, иначе создать rider. Но для этого требуется 2 вызова базы данных, когда база данных может возвращать ошибку ограничения при создании, что было бы одним вызовом. Но как правильно отследить эти ошибки ограничения в Django.
Это 1 из предложенных мною решений, но оно кажется неправильным:
def create_rider(request):
serializer = RiderSerializer(data=request.data, context={"request": request})
if serializer.is_valid():
try:
rider = serializer.save()
return True, rider
except IntegrityError as e:
error_msg = str(e)
if "ds_riders.ds_riders_rider_code_d4b087a9_uniq" in error_msg:
return False, {"details": "Rider Code already exists."}
if "application_users.username" in error_msg:
return False, {"details": "Username already exists."}
return False, {"details": error_msg}
return False, serializer.errors`