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

資訊專欄INFORMATION COLUMN

「Odoo 基礎(chǔ)教程系列」第五篇——從 Todo 應(yīng)用開始(4)

xiyang / 660人閱讀

摘要:在前面教程中,我們使用了兩種類型的視圖和今天我們將學(xué)習(xí)使用另一種類型的視圖搜索視圖。大家可以試試看同時(shí)應(yīng)用多個(gè)分組,或者將分組和過濾器組合使用,仔細(xì)觀察和思考產(chǎn)生的結(jié)果。還是老規(guī)矩,教程中的代碼會更新在倉庫中。

在前面教程中,我們使用了兩種類型的視圖——TreeView 和 FormView. 今天我們將學(xué)習(xí)使用另一種類型的視圖——SearchView, 搜索視圖。

搜索字段

通過之前的實(shí)踐,我們應(yīng)該已經(jīng)知道 Odoo 會為我們的模型定義默認(rèn)的 TreeView 和 FormView 了吧,那對于我們今天要說的主角 SearchView 其實(shí)也是一樣的,我們打開任意一個(gè)列表視圖,都可以在列表的右上方看到有搜索框,除了能在搜索框里輸入文字進(jìn)行檢索外,點(diǎn)一下搜索框右側(cè)的放大鏡還能展開更多的搜索功能,包括過濾器(Filters),分組(Group By)以及收藏(Favorites),其中最常用的就是過濾器了,我們稍候?qū)v到。

默認(rèn)的搜索視圖只會對模型的 name 字段(或 _rec_name 指定的字段)進(jìn)行檢索,例如在我們的待辦事項(xiàng)列表中搜索,會看到搜索框下方自動(dòng)出現(xiàn)了搜索項(xiàng),這里的「描述」也就是我們的待辦事項(xiàng)模型 todo.taskname 字段了:

那我們?nèi)绻胱尅阜诸悺挂材苡糜诖k事項(xiàng)的搜索,該怎么做呢?我們接下來就打開視圖文件,先定義好搜索視圖的基本結(jié)構(gòu):

    
    
        todo.task.view_filter
        todo.task
        
            
                ...
            
        
    

搜索視圖和列表視圖以及表單視圖一樣,都有相似的結(jié)構(gòu),唯一不同的就是在 arch 內(nèi)的部分。接下來我們要在 中加上我們想要搜索的字段:

    
        
        
    

超簡單有沒有!只需要把想要被用于搜索的字段放到 內(nèi)就可以了,這里需要注意的是,我們自己定義了搜索視圖,相當(dāng)于覆蓋掉了默認(rèn)的視圖,所以我們還需要將字段 name 也加入到里面,不然我們就沒辦法根據(jù)待辦事項(xiàng)的描述進(jìn)行搜索啦。

升級一下模塊,在輸入框隨便輸入搜索內(nèi)容看看發(fā)生了什么變化:

還記得我們之前創(chuàng)建過「工作」這個(gè)分類嗎,在下面列出的「分類」的搜索結(jié)果中,點(diǎn)擊小三角符號,就會打開匹配到的相關(guān)結(jié)果。

過濾器

我們再來看看 Odoo 的搜索視圖自帶的過濾器,點(diǎn)開之后我們只看到一個(gè)添加自定義過濾器的選項(xiàng),再點(diǎn)一下看看,出現(xiàn)了一些選項(xiàng):

我們試試隨意添加一些規(guī)則,然后點(diǎn)擊應(yīng)用,看看會有什么發(fā)生(我分別選擇了「緊急程度」「is」「普通」):

我們可以看到在搜索框中,應(yīng)用了這個(gè)過濾器,并且這個(gè)過濾器被添加到了過濾器的選項(xiàng)中,我們還可以再添加幾個(gè)過濾器試試看。

通過以上的操作,我們不難看出,這里的過濾器其實(shí)就是一個(gè)個(gè)過濾規(guī)則,而且我們可以同時(shí)應(yīng)用多個(gè)不同的規(guī)則。如果我們有大量的數(shù)據(jù),而我們想要快速篩選出特定的數(shù)據(jù)的話,就可以使用過濾器達(dá)到這個(gè)目的。

如果我們切換到其他菜單或者刷新頁面,就會發(fā)現(xiàn)之前應(yīng)用的過濾器,又消失了,如果我們在某些數(shù)據(jù)上需要高頻次進(jìn)行過濾操作的話,每次都要手動(dòng)添加過濾規(guī)則的話,就顯得十分不方便了,所以我們來看看怎么在搜索視圖中定義過濾器吧:

    
        
        
        
        
        
        
        
        
        
    

我們在 里添加了五個(gè)過濾器 ,其中 string 是顯示的名稱,name 是數(shù)據(jù)庫中存儲的名字,我們可以通過它來獲取到對應(yīng)的過濾器,最關(guān)鍵的一個(gè)屬性就是 domain 了。在 Odoo 中的各種過濾都是通過domain來實(shí)現(xiàn)的,它是一個(gè)由邏輯前綴和表達(dá)式元組組成的列表,關(guān)于 domain 的更多細(xì)節(jié),這里先不展開來說,后面應(yīng)該會專門寫一篇來說說它。

我們以「未完成」這個(gè)過濾器的 domain 為例,先不管條件是什么,先寫下一個(gè)空的列表 [],這里要記住了,只要是用到 domain 的地方,都先寫下一對中括號 [],因?yàn)閯偨佑|常常會因?yàn)樯賹懥死ㄌ柖鴮?dǎo)致程序出現(xiàn)錯(cuò)誤。

然后我們先不考慮邏輯前綴的事情,我們這里也暫時(shí)沒有用到,所以不要讓這個(gè)名詞困擾到了。在剛剛寫下的空列表中,添加一對圓括號 (),也就是一個(gè)元組,最基本的結(jié)構(gòu)已經(jīng)有了,現(xiàn)在我們來寫表達(dá)式。我們用來標(biāo)記一個(gè)待辦事項(xiàng)是否完成,用的是字段 is_done,如果它的值為 False 則表示這個(gè)待辦事項(xiàng)未完成,反之則表示已完成,根據(jù)這個(gè)規(guī)則,我們可以在元組中添加我們的表達(dá)式了,先寫下字段名 "is_done"(注意這里是字符串),然后寫下表達(dá)式的操作符 "="(這里也是一個(gè)字符串),最后寫下未完成對應(yīng)的值 False(這里是一個(gè)布爾值,非字符串)。

怎么樣,是不是很簡單呢,可能有同學(xué)要問了,為什么這里是用等于號 = 而不是 == 呢?這里就需要大家注意并且習(xí)慣了,不同于我們平時(shí)寫代碼判斷相等時(shí)會用 == 雙等號,在 domain 的表達(dá)式中判斷相等是使用的 = 單個(gè)等號,千萬記住啦!

其他的過濾器我們也能使用同樣的方式寫出來,大家再好好理解一下吧。我們再來看到上面出現(xiàn)的 這個(gè)標(biāo)簽,它有兩個(gè)作用,一個(gè)是將搜索字段和過濾器之間進(jìn)行分組隔離,另一個(gè)作用是以邏輯與(Python 中的 and )對搜索字段和過濾器進(jìn)行連接,說再多不如實(shí)踐來得清楚,我們先升級一下代碼,然后刷新頁面看看實(shí)際的效果吧:

心細(xì)的你一定發(fā)現(xiàn)了,是否完成的過濾器和緊急程度的過濾器被一條分割線分隔開了,從上面的代碼中我們可以看到這根分割線正是 這個(gè)標(biāo)簽在界面上顯示的效果。我們?nèi)绻瑫r(shí)勾選同一組內(nèi)的過濾器,可以發(fā)現(xiàn)搜索框內(nèi)的過濾器被 or 連接起來了,這表明了同一組內(nèi)的過濾器會使用邏輯或(Python 中的 or )進(jìn)行連接,而如果同時(shí)選中兩個(gè)不同組的過濾器,搜索框內(nèi)的過濾器標(biāo)簽則是分開的,也就是我們前面說的,被用邏輯與連接起來了。

試試看在搜索框中輸入內(nèi)容并搜索,然后加上過濾器組合看看效果吧,有沒有發(fā)現(xiàn)什么呢?再看看搜索視圖的代碼,在 之間還有一個(gè) 呢。

分組

使用字段搜索和過濾器,已經(jīng)可以滿足大部分?jǐn)?shù)據(jù)的搜索需求了,有時(shí)候我們除了需要按規(guī)則過濾出所需的數(shù)據(jù)外,還會需要對數(shù)據(jù)進(jìn)行分組查看,這種時(shí)候就可以用上分組(group by)功能了。

和過濾器一樣,分組功能我們同樣可以自己添加自定義的分組,但是要比過濾器簡單得多,只需要選擇一個(gè)字段然后應(yīng)用即可。

我們來看看在搜索視圖中如何定義分組項(xiàng):

    
        ...
        
        
            
            
        
    

我們添加了一個(gè) 標(biāo)簽,并且在里面添加了兩個(gè) ,眼尖的你一定發(fā)現(xiàn)了,這里和過濾器長得一模一樣,只是多了一個(gè) context 屬性,是的沒有錯(cuò),分組的關(guān)鍵也就在這個(gè) context 屬性里,里面是一個(gè)字典,對應(yīng)的鍵值對表示按指定字段進(jìn)行分組。

另外我們再看到這里留空的 domain,大家可以嘗試在里面添加一些表達(dá)式,看看會有什么效果,這里我就不細(xì)說了,快升級模塊然后去頁面中刷新看看效果吧:

我們可以看到數(shù)據(jù)按照我們所選的分組項(xiàng)進(jìn)行了分組,并且默認(rèn)是折疊起來的,點(diǎn)擊展開之后我們可以看到對應(yīng)分組下的數(shù)據(jù),默認(rèn)折疊這個(gè)行為是由 標(biāo)簽的 expand 屬性決定的,如果設(shè)置為 1 的話就會是默認(rèn)展開。

大家可以試試看同時(shí)應(yīng)用多個(gè)分組,或者將分組和過濾器組合使用,仔細(xì)觀察和思考產(chǎn)生的結(jié)果。

瞎說幾句

以上就是這次教程的內(nèi)容啦,SearchView 中還有一個(gè)收藏功能我們沒有講到,這個(gè)功能我們目前或者很長的一段時(shí)間內(nèi)都不會用到,所以也不打算在之后的教程中講解,如果感興趣的話可以自己嘗試著去使用,安裝一些官方的模塊,又或者看看源代碼,去學(xué)習(xí)相關(guān)的知識。

還是老規(guī)矩,教程中的代碼會更新在?GitHub?倉庫「Odoo-Tutorial-Demo」中。

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

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

相關(guān)文章

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

    摘要:雖然這是個(gè)很簡單的應(yīng)用,但是希望大家可以動(dòng)手一起操作,從最簡單的開始上手學(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)太長了,我都覺得不好意思...

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

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

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

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

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

    摘要:大家好鴨,我又來更新啦還記得我們在第二篇教程中提到過的動(dòng)作嗎,今天我們就來專門講講在中的,學(xué)習(xí)不同類型的動(dòng)作對應(yīng)的應(yīng)用場景,并且在我們的應(yīng)用中使用上其中一些類型的動(dòng)作。報(bào)表動(dòng)作這類型的動(dòng)作用于觸發(fā)報(bào)表打印,例如打印發(fā)票等。 showImg(https://segmentfault.com/img/bVbhdTE?w=1471&h=845); 大家好鴨,我又來更新啦!還記得我們在第二篇教...

    Lionad-Morotar 評論0 收藏0
  • Odoo 基礎(chǔ)教程系列」第四篇—— Todo 應(yīng)用開始(3)

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

    HollisChuang 評論0 收藏0

發(fā)表評論

0條評論

xiyang

|高級講師

TA的文章

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