2017-12-19 1 views
0

Ich habe zwei Felder zum Projektmodul, start_date und stop_date hinzugefügt. Und ich habe versucht, einen Code hinzuzufügen, der die Eingabe steuert und den Datensatz nur speichert, wenn stop_date größer als start_date ist. So habe ich diesen Code in das Projekt Klasse:Einrichten der Einschränkung für Startdatum und Deadline

date_start = fields.Date(string='Start Date') 
    date_stop = fields.Date(string= 'Deadline') 
    @api.onchange('date_stop') 
    def _onchange_date_stop(self): 
    if self.date_start != False and self.date_stop != False: 
     if (self.date_stop<=self.date_start): 
      raise ValidationError("deadline date Should be greater than start date!") 
    _constraints = [ 
    (_onchange_date_stop, 'deadline date 2 Should be greater than start date!', []), 
] 

Nun, wenn die Frist vor dem Starttermin ist, wirft es Validierungsfehler:

deadline date Should be greater than start date! 

und wenn ich versuche, den Datensatz zu speichern ich diese bekam Fehler:

deadline date 2 Should be greater than start date! 

    Error details: 
    deadline date Should be greater than start date! 
    None 

Aber wenn die Frist größer als das Startdatum ist, habe ich diesen Fehler:

deadline date 2 Should be greater than start date! 

So habe ich immer ein Problem, ob die Deadline größer war als das Startdatum oder nicht.

Jeder kann helfen? Danke.

Antwort

0

Sie constrain verwenden können Dekorateur

@api.constrains('date_start', 'date_stop') 
def check_date_fields(self): 
    if self.date_start and self.date_stop: 
     if self.date_stop <= self.date_start: 
      raise ValidationError("deadline date Should be greater than start date!") 
+0

Dank. Total für mich gearbeitet. – Tessnim

0

Auch dieser Code arbeitete auch für mich:

date_start = fields.Date(string='Start Date') 
    date_stop = fields.Date(string= 'Deadline') 

    @api.one 
    @api.constrains('date_start', 'date_stop') 
    def _check_deadline(self): 
     if self.date_stop <= self.date_start: 
      raise ValidationError("deadline must be greater than start date") 
Verwandte Themen