OpenERPのインストールでは、以前は必須ではなかった次のフィールドがありますが、必須の引数をTrueに変更しました。
'fiscal_position': fields.many2one(
'account.fiscal.position',
'Fiscal Position',
required=True,
readonly=True,
states={'draft':[('readonly',False)]}
),
デバッグログで、ORMがデータベースのそのフィールドにnull以外の制約を設定しようとしていることがわかります。
2013-01-04 15:28:56 EET STATEMENT: ALTER TABLE "account_invoice"
ALTER COLUMN "fiscal_position" SET NOT NULL
どうすればそれを防ぐことができますか?私の考えは、新しいレコードに対してのみ、NOT NULL制約を持たずに、必要なTrueフラグを設定することです。その他の場合、PostgreSQL整合性エラーが発生します。
IntegrityError: null value in column "fiscal_position" violates
not-null constraint
では、ORMをデータベーススキームの制約に触れさせずに、フォームビューに必須フィールドを含めるにはどうすればよいですか?または、オブジェクトの状態に応じて、必要なフィールドを動的に変更するにはどうすればよいですか?