2016-08-29 10 views
0

ホテルの部屋管理のためのモジュールを作ったので、Pythonで空室状況を確認したいと思います。私はavailable = fields.Boolean()という名前のチェックボックスを採用しました。さて、check_in_timeと入力すると自動的にチェックされるようにします。だから、どうしたらいい?私は取った check_in_time=fields. Datetime()。私はすでに他のフィールドに値を入力してチェックボックスをオンにする方法は?

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 

...このように試してみました。しかし、それはデータベースに....端末のみで、チェックボックスの値を変更していない....それは、デフォルトではすべての時間を「偽」の値をとります。だから、データベースのチェックボックスの値を変更する方法を教えてください?

+0

「available」フィールドを更新した後にモデルインスタンスを保存する必要があると思います。 'a.save()'を試してください。 –

+1

これを確認するhttp://stackoverflow.com/questions/33080950/onchange-functions-on-boolean-fields-in-odoo-8 – Zety

答えて

1

あなたのコードは正しいです。値はクライアントの「保存」アクションに保存されます。 onchangeは実質的にクライアント側で値を保存します。代わりにdependsがデータベースに直接書き込みます。しかしonchangeで十分です。

0

あなたのコードは正しいです。

@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 
関連する問題