Odoo ORM研究1 - BaseModel中的類屬性的作用

概述

我們在寫odoo項目的時候,經(jīng)常繼承model.Model來創(chuàng)建我們自己的ORM映射關(guān)系表。

AbstractModel = BaseModel
# 源碼
class Model(AbstractModel):
    _auto = True                # automatically create database backend
    _register = False           # not visible in ORM registry, meant to be python-inherited only
    _abstract = False           # not abstract
    _transient = False          # not transient

這里發(fā)現(xiàn)我們繼承的Model其實是繼承AbstractModel,而AbstractModel是等于BaseModel的峡蟋,所以我們今天就來研究一下BaseModel做了什么工作坟桅。

先研究一下所有類屬性最終做了什么工作


# 這個很好理解华望,是否創(chuàng)建數(shù)據(jù)表,默認(rèn)我們常用的繼承的Model已經(jīng)將默認(rèn)值設(shè)為True,如果你只是想創(chuàng)建基礎(chǔ)類讓自己別的類來繼承仅乓,那么你就可以創(chuàng)建繼承AbstractModel來進(jìn)行實現(xiàn)赖舟。
_auto = False

# 注冊可見性(具體還沒有測試使用過)。
_register = False           

# 是否是抽象類(Model為False)夸楣。
_abstract = True

# 是否有時效性宾抓,當(dāng)為True的時候,存儲的數(shù)據(jù)過一段時間會消失豫喧,這里我們可以繼承TransientModel實現(xiàn)這個效果石洗。
_transient = False

# 數(shù)據(jù)表的名稱。
_name = None  

# 數(shù)據(jù)表的描述信息紧显。
_description = None         

# 是否僅適用于自定義模型(沒測試過)讲衫。
_custom = False            

# 繼承表,如果沒有_name孵班,那么則直接在主表中添加字段涉兽;
# 如果有_name招驴,那么則會把父類的所有的字段拿過來創(chuàng)建一張新的表。
_inherit = None

"""
_inherits = {
          'a.model': 'a_field_id',  # a_field_id字段必須是many2one的字段
          'b.model': 'b_field_id'
      }
可以直接指定當(dāng)前表的字段是否關(guān)聯(lián)到父表枷畏;
這樣的繼承方式别厘,可以直接使用主表的字段和方法,相當(dāng)于在外鍵的同時會自動創(chuàng)建外鍵字段表中的數(shù)據(jù)拥诡。
"""
_inherits = {}

# 當(dāng)指定_table的時候触趴,那么在數(shù)據(jù)庫就會創(chuàng)建這個_table的名稱,但是在ORM中使用env查詢還是使用_name的名稱值來作為參考袋倔。
_table = None            

# 還未具體使用雕蔽,應(yīng)該是table做query的時候會用到。
_table_query = None        

# 給指定的字段添加作為排序字段宾娜。
_sequence = None            

# 給SQL加上約束
_sql_constraints = []       

# 在外鍵的字段時候會顯示的display_name的字段批狐,這個字段可以自由改動自己想要顯示的值
_rec_name = None          

# 默認(rèn)排序的字段
_order = 'id'    

# 下面都是一些還沒有做研究的字段
_parent_name = 'parent_id'  #: the many2one field used as parent field
_parent_store = False
"""set to True to compute parent_path field.

    Alongside a :attr:`~.parent_path` field, sets up an indexed storage
    of the tree structure of records, to enable faster hierarchical queries
    on the records of the current model using the ``child_of`` and
    ``parent_of`` domain operators.
    """
_active_name = None         #: field to use for active records
_date_name = 'date'         #: field to use for default calendar view
_fold_name = 'fold'         #: field to determine folded groups in kanban views

_needaction = False         # whether the model supports "need actions" (Old API)
_translate = True           # False disables translations export for this model (Old API)
_check_company_auto = False
"""On write and create, call ``_check_company`` to ensure companies
    consistency on the relational fields having ``check_company=True``
    as attribute.
    """

_depends = {}
"""dependencies of models backed up by SQL views
    ``{model_name: field_names}``, where ``field_names`` is an iterable.
    This is only used to determine the changes to flush to database before
    executing ``search()`` or ``read_group()``. It won't be used for cache
    invalidation or recomputing fields.
    """

總結(jié)

  • odoo ORM中類屬性的改變可以讓odoo的model做出很大的改動(這些屬性都是父類屬性可以在繼承的時候可以重寫這些屬性)。
  • 下一章將繼續(xù)研究odoo orm中的一些內(nèi)置方法前塔,讓我們學(xué)習(xí)了之后更加靈活的對odoo ORM進(jìn)行自己想要的調(diào)整嚣艇。
  • 有問題的小伙伴可以在下方留言,或許我可以幫助到你华弓。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末食零,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子寂屏,更是在濱河造成了極大的恐慌贰谣,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件迁霎,死亡現(xiàn)場離奇詭異吱抚,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)考廉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門秘豹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人昌粤,你說我怎么就攤上這事既绕。” “怎么了涮坐?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵凄贩,是天一觀的道長。 經(jīng)常有香客問我袱讹,道長疲扎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮评肆,結(jié)果婚禮上债查,老公的妹妹穿的比我還像新娘。我一直安慰自己瓜挽,他們只是感情好盹廷,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著久橙,像睡著了一般俄占。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上淆衷,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天缸榄,我揣著相機(jī)與錄音,去河邊找鬼祝拯。 笑死甚带,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的佳头。 我是一名探鬼主播鹰贵,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼康嘉!你這毒婦竟也來了碉输?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤亭珍,失蹤者是張志新(化名)和其女友劉穎敷钾,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體肄梨,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡阻荒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了峭范。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片财松。...
    茶點(diǎn)故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡瘪贱,死狀恐怖纱控,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情菜秦,我是刑警寧澤甜害,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站球昨,受9級特大地震影響尔店,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一嚣州、第九天 我趴在偏房一處隱蔽的房頂上張望鲫售。 院中可真熱鬧,春花似錦该肴、人聲如沸情竹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽秦效。三九已至,卻和暖如春涎嚼,著一層夾襖步出監(jiān)牢的瞬間阱州,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工法梯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留苔货,地道東北人。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓立哑,卻偏偏與公主長得像蒲赂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子刁憋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評論 2 355

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