Einschränkungen können zwei Arten sein.
- Anwendungseinschränkungen
- Datenbank Constraints
Datenbank Constraints
Datenbank Einschränkungen wird die Validierung auf Datenbankebene hinzufügen, während Sie das Modul aktualisieren. Datenbankeinschränkungen sind eine Liste von Tupeln, in denen Tupel drei Argumente enthält.
_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'),
]
- Einschränkungen nennen
- Einschränkungen, wie einzigartig, eindeutige Einschränkungen überprüfen zu viele Spalten angewendet werden.
- Fehlermeldung
Beispiel:
_sql_constraints = [
('uniq_vat', 'unique(vat)', 'It already exists another company with the same TIN!'),
]
Mehrere Datenbankbeschränkungen zusammengerechnet werden können.
Anwendung Constraints
wird Anwendungseinschränkungen verwendet benutzerdefinierte Validierung zum Zeitpunkt der Aufzeichnung Feuer hinzufügen, aktualisieren und löschen. Kurz gesagt, Ihre benutzerdefinierte Methode wird aufgerufen, wenn Änderungen mit Datensatz auftreten.
So definieren Sie Constrains im Code.
@api.constrains('field1','field2'....)
Constrains können zusammen auf mehrere Felder angewandt werden, können Sie auch separat definieren.
@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!")
statt self.env.vat einfach den Feldnamen geben (TIN in Ihrem Fall) –