2014-01-30 2 views
0

В пределах OpenERP, когда вы определяете новое поле char в python и устанавливаете False в качестве значения по умолчанию, поле будет установлено в NULL в db, ORM, заботясь о преобразовании. ORM также конвертирует целочисленный тип таким же образом, или я должен быть осторожным, чтобы он мог преобразовать его в 0 вместо NULL?Does OpenERP конвертирует значение False в NULL, если оно влияет на целое число?

Где я могу найти правила конвертации значений на лету OSV (OpenERP ORM)?

ответ

3

Да, при выдаче запроса ORM '.search', перейдите в Python False, чтобы представить нулевые базы данных. ORM не имеет оператора 'is', поэтому вы должны запрашивать ('column', '=', False). Аналогично, когда «.browse» возвращает строки, нулевые значения базы данных преобразуются в Python False.

Я считаю, что причиной этого является то, что xmlrpc (который используется для отправки этих запросов на ваш сервер OpenERP) не имеет возможности представлять значения None/null в своей конфигурации «из коробки». Xmlrpc можно настроить так, чтобы разрешать нули, но OpenERP не использует это.

Очевидный вопрос, который возникает, это то, что происходит для нулевых булевых полей, где False - допустимое значение? Основываясь на личных экспериментах: при создании строки с нулевыми логическими полями, если вы передаете Python False, база данных будет содержать false, а не null, как для других типов данных. Я не думаю, что есть какой-либо способ установить такие поля в null: он не работает, чтобы передать Python None или не устанавливать значение по умолчанию None и не передавать этот столбец вообще.

Где это задокументировано? Я не могу найти его.

Это все безумие. Добро пожаловать в Оду!

+3

Я чувствую, что мы должны сделать футболки с надписью «Это все безумие. Добро пожаловать в Оду!» ;) –

+0

вы можете использовать ('column', '=', None), он выглядит как столбец NULL. –

 Смежные вопросы

  • Нет связанных вопросов^_^