odoo10學習筆記四:onchange、惟一性約束

 

轉載請註明原文地址:http://www.javashuo.com/article/p-umwvapux-ma.htmlhtml

 

一:onchange機制【onchange=前端js函數!能夠實現前端實時更新以及修改驗證】前端

onchange機制:不須要保存數據到數據庫就能夠實時更新用戶界面上的顯示。python

@api.onchange('監聽的字段', '監聽的字段'。。。)
def _onchange_受影響的字段(self):
    # set auto-changing field
    self.受影響的字段 = 根據監聽字段計算出受影響字段的值

也能夠監控某字段值的變化,若是異常則報錯:sql

複製代碼
複製代碼
@api.onchange('監聽的字段')
def _verify_監聽字段(self):
    if 監聽字段值異常:
        return {
            'warning': {
                'title': "異常類型",
                'message': "具體異常信息",
            },
        }
複製代碼
複製代碼

 

二:模型字段約束數據庫

python約束:使用裝飾器,@api.constrains('約束字段')api

Python約束經過方法裝飾器constraints()來定義,並在記錄集上調用這個方法。函數

裝飾器參數指定了約束涉及的字段,當涉及的字段中任一發生改變時觸發方法執行。若是不知足約束條件,該方法將引起異常。post

@api.constrains('約束字段')
def _check_something(self):
 for record in self:
     if record.約束字段 op 值:
         raise ValidationError("異常信息")

 

sql約束:使用_sql_constraints屬性學習

屬性值是一個列表,每個列表元素有三個內容:(name, sql_definition, message):spa

name是約束字段名

sql_definition是一個postgresql語句,檢查該字段值

message是校驗失敗時返回的錯誤消息

複製代碼
複製代碼
_sql_constraints = [
     ('name',
      'CHECK(name op 值)',
      "異常信息"),

     ('name',
      'sql語句',
      "異常信息"),
 ]
複製代碼
複製代碼
相關文章
相關標籤/搜索