В моей установке 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 касаться ограничений схемы базы данных? Или как я могу изменить поле, которое требуется динамически, в соответствии с состоянием объекта?