170 похожих чатов

Вы замечали, что update_or_create не всегда отрабатывает правильно? Как вы

боролись с этой проблемой?

11 ответов

17 просмотров

например?

antonov- Автор вопроса

Заметил через долгое время, что несколько записей не обновляются, а создаются заново. При том, проверил, а они абсолютно идентичны по тем параметрам, которые идут в get

нужно смотреть логику создания, возможно по переданным данным орм не понимает что это тот же объект, возможно есть смысл сделать юник тугезе чтобы избежать

antonov- Автор вопроса

так а юник тугезе просто выбьет ошибку и все. Инфа то не обновится ведь?

ну как минимум не будет задвоения данных, я так понимаю что апдей ор криэйт работает так - пытается найти как гет, и если ошибка то создает новый, но ошибка может быть не потому что не нашел, а потому что нашел несколько

antonov- Автор вопроса

там вроде бы только на DoesNotExists стоит проверка

как по твоему он должен действовать если несколько записей находит?

antonov- Автор вопроса

обработать MultipleObjectsReturned, мне кажется. По крайней мере, get_or_create все равно кидает этот експешн, если находит более одного

antonov- Автор вопроса

проверил сейчас по нескольких полям, да, кидает MultipleObjectsReturned в update_or_create тоже

Тогда вообще не понятно как может дублировать

antonov- Автор вопроса

очевидно, что пытается сделать get, не находит и создает. Не понимает, что одинаковые. Посмотрел код джанги на гите, у них в get_or_create идет обработка IntegrityError. Вполне может быть, что юник тугезе даже обновит инфо. Сейчас попробую и отпишу)

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта