2016-08-29 1 views
0

Ich habe ein Modul für die Verwaltung von Hotelzimmern erstellt und möchte die Verfügbarkeit von Zimmern in Python überprüfen. Ich habe das Kontrollkästchen available = fields.Boolean() übernommen. Nun möchte ich, dass es automatisch überprüft wird, wenn ich check_in_time eintrage. Also, wie kann ich das tun? Ich habe check_in_time=fields. Datetime() genommen. Ich habe schon versucht, wie diese ...Wie Sie das Kontrollkästchen aktivieren, indem Sie den Wert in ein anderes Feld eingeben?

class Hotel_Management(models.Model): 

    check_in_time = fields. Datetime() 
    available = fields.Boolean() 

    @api.onchange('check_in_time') 
    def auto_check(self): 
     for a in self: 
      if a.check_in_time: 
       a.available=True 
       print a.available 
      else: 
       print a.available 

Aber es ändert den Wert der Checkbox nur im Terminal .... nicht in der Datenbank .... es nimmt „false“ Wert standardmäßig jedes Mal, . Also, sag mir, wie man den Wert der Checkbox in der Datenbank ändert?

+0

Ich denke, Sie müssen die Modellinstanz speichern, nachdem Sie ihr 'available' Feld aktualisiert haben. Probieren Sie 'a.save()'. –

+1

Überprüfen Sie diese http://stackoverflow.com/questions/33080950/onchange-functions-on-boolean-fields-in-odoo-8 – Zety

Antwort

1

Ihr Code ist richtig. Der Wert wird bei der Aktion "Speichern" im Client gespeichert. onchange speichert den Wert virtuell vor Ort. depends wird stattdessen direkt in die Datenbank schreiben. Aber onchange sollte hier genug sein.

0

Ja, Ihr Code stimmt. aber Sie müssen Schreibfunktion mit diesen Werten überschreiben, zum Beispiel:

@api.multi 
def write(self, vals): 
    res = super(Hotel_Management, self).write(vals) 
    if 'check_in_time' in vals: 
     if vals['check_in_time']: 
      vals['available'] = True 
     else: 
      print vals['available'] 
    return res 
Verwandte Themen