Обновление не выдает ошибку целостности (OneToOneField)

Параметры POST Данные базы данных

Обновление не выдает ошибку целостности ключа "один к одному":

Модель выглядит так:

store = models.ForeignKey(Store, on_delete=models.CASCADE, db_index=True)
credit_type = models.OneToOneField(CreditType, on_delete=models.CASCADE)
value = models.IntegerField(validators=[MinValueValidator(0)], default=0)

и API выглядит так:

curd = 'add'
operate = {'add': operator.add, 'delete': operator.sub}
try:
    for index, c_id in enumerate(credit_ids):
        StoreCredits.objects.filter(store_id=store_id, credit_type_id=c_id)\
            .update(value=operate[curd](F('value'), credit_values[index]))
except IntegrityError:
    return {"wrong key entered try again."}
return {"success"}

Другая информация: функция API имеет: @transaction.atomicи я не преобразую значения POST в int, хотя база данных имеет типы int,

Он работает нормально, просто добавляет удаляет значения, но я хочу обрабатывать неправильные идентификаторы. С внешним ключом он выдает ошибку целостности при передаче неверного идентификатора, здесь он не выдает ошибку, просто возвращает ошибку 'success'
он просто добавляет значения в credit_ids, которые совпадают и ничего не делают с другими

0 ответов

Другие вопросы по тегам