Trong bản cài đặt OpenERP của tôi, tôi có trường sau đây, không cần thiết trước đó, nhưng tôi đã thay đổi đối số được yêu cầu thành True.Làm cách nào để tạo trường trong OpenERP chỉ yêu cầu cho trạng thái luồng công việc cụ thể?
'fiscal_position': fields.many2one(
'account.fiscal.position',
'Fiscal Position',
required=True,
readonly=True,
states={'draft':[('readonly',False)]}
),
Trong nhật ký gỡ lỗi, tôi thấy rằng ORM cố gắng đặt ràng buộc không rỗng cho trường đó trong cơ sở dữ liệu.
2013-01-04 15:28:56 EET STATEMENT: ALTER TABLE "account_invoice"
ALTER COLUMN "fiscal_position" SET NOT NULL
Làm cách nào để ngăn chặn điều đó? Ý tưởng của tôi là có cờ True bắt buộc, chỉ cho các bản ghi mới và không có ràng buộc NOT NULL. Trong trường hợp khác lỗi vẹn PostgreSQL xảy ra:
IntegrityError: null value in column "fiscal_position" violates
not-null constraint
Vì vậy, làm thế nào tôi có thể có một trường bắt buộc trong giao diện hình thức, mà không làm cho ORM chạm vào những hạn chế chương trình cơ sở dữ liệu? Hoặc làm thế nào tôi có thể thay đổi trường được yêu cầu động, theo trạng thái của đối tượng?
Cảm ơn sự giúp đỡ. –