制約は2種類あります。あなたがそのモジュールをアップグレードしながら、
データベース制約
データベースの制約は、データベースレベルでの検証を追加します。データベース制約はタプルのリストであり、タプルには3つの引数が含まれます。
_sql_constraints = [
('constrain name', 'unique(field1, field2)', 'error message which you want to raise on constrains violation'),
('constrain name', 'constrains defination', 'error message which you want to raise on constrains violation'),
]
- 制約は、ユニークなように、チェック ユニーク制約が多くの列に適用することができ、
- 制約に名前を付けます。
- エラーメッセージ
例:
_sql_constraints = [
('uniq_vat', 'unique(vat)', 'It already exists another company with the same TIN!'),
]
複数のデータベースの制約を一緒に添加することができます。
アプリケーションの制約
アプリケーションの制約は、追加、更新、削除レコードの時にカスタム検証を発射するために使用されます。要するに、レコードに変更が生じた場合、カスタムメソッドが呼び出されます。
コード内の制約を定義する方法。
@api.constrains('field1','field2'....)
制約を複数のフィールドに同時に適用することもできますが、別々に定義することもできます。代わりにself.env.vatの
@api.constrains('vat')
def check_vatnumber(self):
for record in self:
obj = self.search([('vat','=',record.vat),('id','!=',record.id)])
if obj:
raise Warning("Warning", "It already exists another company with the same TIN!")
は単に –