odoo ORM研究3 - odoo fields常用的字段屬性

之前我們已經(jīng)講解了odoo ORM中的一些對字段常用的API操作方法砸泛,今天我們繼續(xù)研究一下Odoo orm中字段的一些通用屬性字段的使用,學會它們可以為自己創(chuàng)建數(shù)據(jù)映射并使用有更好的幫助。

通用字段屬性

實例化映射模型的時候時可以使用以下屬性

  • string(str)

    • xml視圖在渲染的時候會顯示這個值的內(nèi)容期揪。
    • fandx_name = fields.Char(string="姓名")
  • help(str)

    • 幫助文字,鼠標放到對應字段上面會出現(xiàn)help的描述內(nèi)容规个。
    • fandx_name = fields.Char(help="這是一個姓名")
  • readonly(bool)

    • 是否是只讀凤薛,只讀則不可以修改字段的內(nèi)容,在視圖中不可以修改對應字段的內(nèi)容绰姻。
    • fand_name = fields.Char(string="姓名", readonly=True)
  • required(bool)

    • 是否必填枉侧,如果required為True,那么這個字在XML視圖顯示的時候不填則保存的時候會報錯狂芋。
    • fandx_name = fields.Char(string="姓名", readonly=True, required=True)
  • index(bool)

    • 是否在數(shù)據(jù)庫建立索引榨馁,加上索引的字段在搜索的時候會有速度的提升。
    • fandx_name = fields.Char(string="姓名", readonly=True, required=True, index=True)
  • default(value 或者 callable)

    • default可以設(shè)置這個字段的默認值帜矾。

    • default的內(nèi)容可以是固定的默認值翼虫。

    • default也可以是一個被調(diào)用的function,default的值會自動設(shè)置為function的返回值屡萤。

    • 方式一:fandx_name = fields.Char(string="姓名", default="張三")

    • 方式二:fandx_name = fields.Char(string="姓名", default=lambda self: self.env.user.display_name)

    • 方式三:

      def _defult_name(self):
        return self.env.user.display_name
      fandx_name = fields.Char(string="姓名", invisible=True, default=_defult_name)
      
  • states(bool)

    • 這個可以根據(jù)state狀態(tài)的的值動態(tài)改變字段在XML中的顯示狀態(tài)珍剑。

    • 必須配合state狀態(tài)字段使用。

      model.py

      state = fields.Selection([('create', '創(chuàng)建'), ('finish', '已完成')], string='狀態(tài)', default='create')
      fandx_test = fields.Char("測試字段", states={'create': [('required', True)], 'finish': [('readonly', True)]})
      

      View.xml

      <field name="state" />
      <field name="fandx_test" />
      
    • 注意:K缆健U凶尽唧瘾!用到這個方法必須要在xml視圖中加載state字段,如果不加載則會報JS錯誤别凤。

  • groups(str)

    • 權(quán)限組饰序,odoo中可以去配置自己的權(quán)限組,可以給指定的字段賦予權(quán)限組规哪,這個字段會根據(jù)權(quán)限組的內(nèi)容設(shè)置進行限制增刪改查權(quán)限求豫。
    • fandx_name = fields.Char(string="姓名", default="張三", groups='base.group_user')
  • company_dependent(bool)

    • 這個字段如果為True的話,這個字段的數(shù)據(jù)值會根據(jù)登錄的用戶的公司進行綁定诉稍,可以實現(xiàn)不同用戶不同字段內(nèi)容顯示蝠嘉。
    • fandx_name = fields.Char(string="姓名", company_dependent=True)
  • copy(bool)

    • odoo有自帶的模型快速復制的功能,這個如果copy的值為False那么就不會被復制杯巨,這個值默認值為True蚤告,one2many字段和計算字段是默認為Fasle的。
    • fandx_name = fields.Char(string="姓名", company_dependent=True, copy=False)
  • store(bool)

    • 是否存儲到數(shù)據(jù)庫中舔箭,默認值為True罩缴,compute計算字段默認值為False蚊逢。
    • fandx_name = fields.Char(string="姓名", store=False)
  • group_operator(str)

    • 這里的str內(nèi)容是固定的選擇层扶,在搜索分組的時候計算字段的值會用到這個group_operator的內(nèi)容。

      • count - 計算數(shù)量烙荷。

      • count_distinct - 數(shù)據(jù)不同的數(shù)量镜会。

      • bool_and - 如果所有值都為true,則為true终抽,否則為false戳表。

      • bool_or - true if at least one value is true, otherwise false。

      • max - 最大值昼伴。

      • min - 最小值匾旭。

      • avg - 平均值。

      • sum - 求和圃郊。

        image-20210722154828793.png
  • fandx_nums = fields.Integer(string="a_test", group_operator='sum')

  • group_expand(str)

    • 這里傳進一個方法名稱价涝,在分組的時候會進行調(diào)用這個方法。

      state = fields.Selection([('create', '創(chuàng)建'), ('finish', '已完成')], string='狀態(tài)', default='create', group_expand="_expand_states")
      
      def _expand_states(self, states, domain, order):
        # 這里返回需要成組的字段持舆,如果按state分組就會走到這個方法色瘩!
          return [key for key, val in type(self).state.selection]
      

總結(jié)

  • 通用屬性在創(chuàng)建字段的時候是經(jīng)常會用到的,我們需要靈活的使用它們逸寓。
  • 還有compute計算屬性居兆,這里就先不做解釋,后面單獨去講解它竹伸。
  • 如果有問題請在下方留言討論
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末泥栖,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌吧享,老刑警劉巖晦毙,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異耙蔑,居然都是意外死亡见妒,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進店門甸陌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來须揣,“玉大人,你說我怎么就攤上這事钱豁〕芸ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵牲尺,是天一觀的道長卵酪。 經(jīng)常有香客問我,道長谤碳,這世上最難降的妖魔是什么溃卡? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任慷彤,我火速辦了婚禮参滴,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘缆镣。我一直安慰自己搓茬,他們只是感情好犹赖,可當我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著卷仑,像睡著了一般峻村。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上锡凝,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天粘昨,我揣著相機與錄音,去河邊找鬼私爷。 笑死雾棺,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的衬浑。 我是一名探鬼主播捌浩,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼工秩!你這毒婦竟也來了尸饺?” 一聲冷哼從身側(cè)響起进统,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎浪听,沒想到半個月后螟碎,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡迹栓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年掉分,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片克伊。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡酥郭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出愿吹,到底是詐尸還是另有隱情不从,我是刑警寧澤,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布犁跪,位于F島的核電站椿息,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏坷衍。R本人自食惡果不足惜寝优,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望惫叛。 院中可真熱鬧倡勇,春花似錦逞刷、人聲如沸嘉涌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽仑最。三九已至,卻和暖如春帆喇,著一層夾襖步出監(jiān)牢的瞬間警医,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工坯钦, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留预皇,地道東北人。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓婉刀,卻偏偏與公主長得像吟温,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子突颊,可洞房花燭夜當晚...
    茶點故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容