成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

「Odoo 基礎(chǔ)教程系列」第四篇——從 Todo 應(yīng)用開(kāi)始(3)

HollisChuang / 1773人閱讀

摘要:在這一篇教程中,將會(huì)涉及到外鍵字段,可以將兩個(gè)模型關(guān)聯(lián)起來(lái),然后很方便地獲取到對(duì)應(yīng)的數(shù)據(jù)。關(guān)聯(lián)字段這一小節(jié)里,我們會(huì)給待辦事項(xiàng)加上分類(lèi),并且這個(gè)分類(lèi)可以讓用戶自己創(chuàng)建維護(hù)。今天這篇教程的內(nèi)容就先到這里了,教程中的代碼會(huì)更新在我的倉(cāng)庫(kù)中。

在這一篇教程中,將會(huì)涉及到外鍵字段,可以將兩個(gè)模型關(guān)聯(lián)起來(lái),然后很方便地獲取到對(duì)應(yīng)的數(shù)據(jù)。

關(guān)聯(lián)字段

這一小節(jié)里,我們會(huì)給待辦事項(xiàng)加上分類(lèi),并且這個(gè)分類(lèi)可以讓用戶自己創(chuàng)建維護(hù)。我們需要先創(chuàng)建一個(gè)新的模型 TodoCategory,然后將它和待辦事項(xiàng)關(guān)聯(lián)起來(lái):

# models.py
class TodoCategory(models.Model):
    _name = "todo.category"
    _description = "分類(lèi)"

    name = fields.Char(u"名稱(chēng)")
    task_ids = fields.One2many("todo.task", "category_id", string=u"待辦事項(xiàng)")
    count = fields.Integer(u"任務(wù)數(shù)量", compute="_compute_task_count")

    @api.depends("task_ids")
    @api.multi
    def _compute_task_count(self):
        pass


class TodoTask(models.Model):
    _name = "todo.task"
    _description = "待辦事項(xiàng)"
    # ...
    category_id = fields.Many2one("todo.category", string=u"分類(lèi)")

在上面的代碼中,我們定義了一個(gè) todo.category 模型,包含三個(gè)字段,然后添加了一個(gè) category_id 到待辦事項(xiàng)模型中,我們重點(diǎn)來(lái)看看 category_idtask_ids 這兩個(gè)字段。

這兩個(gè)字段都是關(guān)聯(lián)字段,一個(gè)是 Many2one,另一個(gè)是 One2many,還有一種我們暫時(shí)不會(huì)講到的 Many2many 多對(duì)多的關(guān)聯(lián)字段。Many2one 有一個(gè)必填的屬性 comodel_name 表示要關(guān)聯(lián)的模型的 _name,這個(gè)字段的值可能是 0 個(gè)或 1 個(gè)所關(guān)聯(lián)對(duì)象的記錄集,我們可以通過(guò)這個(gè)字段直接獲取到所關(guān)聯(lián)的數(shù)據(jù)對(duì)象,而不需要自己去查找對(duì)應(yīng)的實(shí)例。另一個(gè)關(guān)聯(lián)字段 One2many 同樣有必填的屬性 comodel_name,同時(shí)還有一個(gè) inverse_name 屬性,表示的是與當(dāng)前模型所關(guān)聯(lián)的模型(comodel_name 所指的模型)的 Many2one 字段的字段名,在此例中即 category_id,通過(guò) One2many 字段我們可以直接獲取到所有關(guān)聯(lián)了當(dāng)前記錄的數(shù)據(jù)集。在這個(gè)例子中,假設(shè)我們有一個(gè)分類(lèi)是「工作」,也就是說(shuō)我們可以通過(guò)工作這個(gè)分類(lèi)的 task_ids 這個(gè)字段獲取到所有待辦事項(xiàng)中 category_id 所關(guān)聯(lián)的分類(lèi)是「工作」的所有待辦事項(xiàng)。

回到我們的代碼中,我們看到分類(lèi)模型中還有一個(gè)計(jì)算字段 count,我們希望可以看到在一個(gè)分類(lèi)下有多少待辦事項(xiàng),所以需要用到上一篇教程中所講到的計(jì)算字段,這里就當(dāng)作是復(fù)習(xí),一起來(lái)完成這個(gè)字段的計(jì)算邏輯:

# models.py
@api.depends("task_ids")
@api.multi
def _compute_task_count(self):
    for record in self:
        record.count = len(record.task_ids)

這里的邏輯也十分簡(jiǎn)單,我們只需要通過(guò)記錄集的實(shí)例對(duì)象 record 獲取到對(duì)應(yīng)的待辦事項(xiàng),然后用 len() 獲取 task_ids 的長(zhǎng)度即可。

好的,模型已經(jīng)有了,還差了點(diǎn)什么呢?沒(méi)錯(cuò),還少了菜單和視圖,這里我們直接給出代碼,如果還有不理解怎么創(chuàng)建菜單和視圖的小伙伴,記得翻看一下之前的教程內(nèi)容。




    
        
        
        
        
        
            待辦事項(xiàng)
            todo.task
            form
            tree,form
            current
        
    
        
            分類(lèi)
            todo.category
            form
            tree,form
            current
        
        
        
        
    

菜單這里我們多增加了一層,聰明的你們應(yīng)該能夠一眼看出來(lái)哪里不同了,如果還是沒(méi)找到,實(shí)際運(yùn)行之后再觀察一下菜單的結(jié)構(gòu)吧~



    
        
        
            todo.category.view_tree
            todo.category
            tree
            
                
                    
                    
                
            
        
    

OK,來(lái)更新一下模塊,然后打開(kāi)看看效果吧,再?lài)L試創(chuàng)建幾個(gè)分類(lèi),并且給待辦事項(xiàng)關(guān)聯(lián)上分類(lèi)。

視圖

一切看起來(lái)還不錯(cuò),但是有沒(méi)有覺(jué)得,創(chuàng)建待辦事項(xiàng)的表單視圖(Form View),以及分類(lèi)的表單視圖,顯得有些凌亂了?雖然并不是不能用,但是,我們還是決定要改造一下!

我們先從分類(lèi)的視圖開(kāi)始,首先可以看到分類(lèi)中主要的信息就兩個(gè)——分類(lèi)的名稱(chēng)和分類(lèi)下的任務(wù)數(shù)量。待辦事項(xiàng)我們其實(shí)不需要從分類(lèi)中直接去查看,所以我們大可不必把待辦事項(xiàng)的記錄顯示出來(lái),那我們的目標(biāo)已經(jīng)很明確了,隱藏分類(lèi)表單視圖中的待辦事項(xiàng)記錄,和 Tree View 一樣,我們把視圖先寫(xiě)好:



    todo.category.view_form
    todo.category
    form
    
        

怎么樣,看起來(lái)是不是舒服多了~再仔細(xì)一想,創(chuàng)建分類(lèi)其實(shí)也只需要填一個(gè)名稱(chēng),能不能不需要跳轉(zhuǎn)到專(zhuān)門(mén)的表單視圖里去創(chuàng)建咧?那當(dāng)然是沒(méi)問(wèn)題的啦,我們可以讓分類(lèi)直接就在 Tree View 中創(chuàng)建而不需要專(zhuān)門(mén)到 Form View 中去:



    todo.category.view_tree
    todo.category
    tree
    
        
            
            
        
    

其實(shí)很簡(jiǎn)單,我們只需要在分類(lèi)的 Tree View 中的 標(biāo)簽中加上 editable="bottom" 這個(gè)屬性即可,超簡(jiǎn)單有沒(méi)有!分類(lèi)的視圖的處理,我們就先到這里,再來(lái)看看待辦事項(xiàng)的表單視圖應(yīng)該怎么弄比較好。

待辦事項(xiàng)的表單視圖,我們只需要簡(jiǎn)單地排一下版就好啦,沒(méi)有復(fù)雜的處理:



    todo.task.view_form
    todo.task
    form
    
        

視圖部分,就先到這里,這還只是很基礎(chǔ)的一小部分內(nèi)容,后面還會(huì)有更多關(guān)于視圖部分的特性,在我們用到的時(shí)候?qū)?huì)給大家講解。

今天這篇教程的內(nèi)容就先到這里了,教程中的代碼會(huì)更新在我的 GitHub 倉(cāng)庫(kù)中。

倉(cāng)庫(kù)地址:Odoo-Tutorial-Demo

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/42268.html

相關(guān)文章

  • Odoo 基礎(chǔ)教程系列」第二篇—— Todo 應(yīng)用開(kāi)始(1)

    摘要:雖然這是個(gè)很簡(jiǎn)單的應(yīng)用,但是希望大家可以動(dòng)手一起操作,從最簡(jiǎn)單的開(kāi)始上手學(xué)習(xí)如何使用這個(gè)框架。則是在和之間,負(fù)責(zé)響應(yīng)用戶操作,從中獲取數(shù)據(jù)進(jìn)行處理并返回到中。 showImg(https://segmentfault.com/img/bV66tE?w=728&h=410); 在第一篇教程發(fā)布之后差不多一個(gè)月的今天,終于完成了第二篇內(nèi)容,這個(gè)發(fā)布周期拖得實(shí)在是有點(diǎn)太長(zhǎng)了,我都覺(jué)得不好意思...

    UCloud 評(píng)論0 收藏0
  • Odoo 基礎(chǔ)教程系列」第七篇—— Todo 應(yīng)用開(kāi)始(6)

    摘要:今天這個(gè)系列教程即將迎來(lái)它的最后一篇內(nèi)容了,我們將要來(lái)學(xué)習(xí)中權(quán)限相關(guān)的內(nèi)容。在的權(quán)限管理體系中,同樣也有用戶組這一概念的存在,和其他框架如可以說(shuō)大同小異。通常和權(quán)限相關(guān)的內(nèi)容,我們都會(huì)在模塊的目錄下進(jìn)行定義,記錄集規(guī)則的定義自然也不例外。 在今年的情人節(jié)(2018.02.14)那天,我寫(xiě)了一篇博客說(shuō)即將要開(kāi)一個(gè)坑,也就是大家在看的這個(gè)系列的教程。今天這個(gè)系列教程即將迎來(lái)它的最后一篇內(nèi)容...

    zeyu 評(píng)論0 收藏0
  • Odoo 基礎(chǔ)教程系列」第三篇—— Todo 應(yīng)用開(kāi)始(2)

    摘要:現(xiàn)在我們來(lái)給待辦事項(xiàng)增加一個(gè)緊急程度的字段,用來(lái)表示當(dāng)前任務(wù)的優(yōu)先級(jí)。此處我們還給這個(gè)字段添加了默認(rèn)值,表示當(dāng)一個(gè)待辦事項(xiàng)被創(chuàng)建后,如果沒(méi)有指定緊急程度,將默認(rèn)是待辦狀態(tài)。這篇教程中的代碼同樣會(huì)更新在我的倉(cāng)庫(kù)中。 showImg(https://segmentfault.com/img/bVbfv3E?w=1330&h=912); 在這篇教程里我們將會(huì)了解到 Odoo 模型里的一些其他...

    iflove 評(píng)論0 收藏0
  • Odoo 基礎(chǔ)教程系列」第六篇—— Todo 應(yīng)用開(kāi)始(5)

    摘要:大家好鴨,我又來(lái)更新啦還記得我們?cè)诘诙坛讨刑岬竭^(guò)的動(dòng)作嗎,今天我們就來(lái)專(zhuān)門(mén)講講在中的,學(xué)習(xí)不同類(lèi)型的動(dòng)作對(duì)應(yīng)的應(yīng)用場(chǎng)景,并且在我們的應(yīng)用中使用上其中一些類(lèi)型的動(dòng)作。報(bào)表動(dòng)作這類(lèi)型的動(dòng)作用于觸發(fā)報(bào)表打印,例如打印發(fā)票等。 showImg(https://segmentfault.com/img/bVbhdTE?w=1471&h=845); 大家好鴨,我又來(lái)更新啦!還記得我們?cè)诘诙?..

    Lionad-Morotar 評(píng)論0 收藏0
  • Odoo 基礎(chǔ)教程系列」第五篇—— Todo 應(yīng)用開(kāi)始(4)

    摘要:在前面教程中,我們使用了兩種類(lèi)型的視圖和今天我們將學(xué)習(xí)使用另一種類(lèi)型的視圖搜索視圖。大家可以試試看同時(shí)應(yīng)用多個(gè)分組,或者將分組和過(guò)濾器組合使用,仔細(xì)觀察和思考產(chǎn)生的結(jié)果。還是老規(guī)矩,教程中的代碼會(huì)更新在倉(cāng)庫(kù)中。 showImg(https://segmentfault.com/img/bVbgO85?w=1950&h=1300); 在前面教程中,我們使用了兩種類(lèi)型的視圖——TreeVi...

    xiyang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<