В моей установке OpenERP у меня есть следующее поле, которое раньше не требовалось, но я изменил обязательный аргумент на True.
'fiscal_position': fields.many2one(
'account.fiscal.position',
'Fiscal Position',
required=True,
readonly=True,
states={'draft':[('readonly',False)]}
),
В журнале отладки я вижу, что ORM пытается установить ненулевое ограничение для этого поля в базе данных.
2013-01-04 15:28:56 EET STATEMENT: ALTER TABLE "account_invoice"
ALTER COLUMN "fiscal_position" SET NOT NULL
Как я могу предотвратить это? Моя идея состоит в том, чтобы иметь требуемый флаг True только для новых записей и без ограничения NOT NULL. В других случаях возникают ошибки целостности PostgreSQL:
IntegrityError: null value in column "fiscal_position" violates
not-null constraint
Итак, как я могу иметь обязательное поле в представлении формы, не заставляя ORM затрагивать ограничения схемы базы данных? Или как я могу динамически изменить требуемое поле в зависимости от состояния объекта?