odoo12 修行基礎篇之 記錄批處理 (七)

2022-07-02 05:48:10 字數 3676 閱讀 5602

客戶需求總是不斷啊...

批處理我們得先有個按鈕啊,加吧,加的過程中就加上了批量處理方式了。

在加按鈕之前還要說下odoo中常用的三類模型,因為,一種我們沒見過的模型即將登場...

基本模型:model.model,儲存資料記錄的模型,不會定期刪除

瞬態模型:model.transientmodel,瞬態模型,資料會被定期刪除,常用於與使用者的臨時互動

抽象模型:model.abstractmodel,抽象模型,不會存資料(還得研究研究,這裡我嘗試用了以下,一直報錯,沒咋搞懂,希望多交流)

這裡我們用到了瞬態模型

1、建立my_customer_complain_transient.py檔案,再init.py中引入。

方法內容先不管。

#

-*- coding:utf-8 -*-

from odoo import

models, api

from odoo.exceptions import

usererror

class

mycustomercomplaintransient(models.transientmodel):

_name = '

my.customer.complain.transient

'_description = '

批量確認'#

預處理方法

@api.model

defdefault_get(self, fields_list):

records = self._get_all_complains(self._context['

active_ids'])

records_undraft_names = records.filtered(lambda r: r.state != '

draft

name')

ifrecords_undraft_names:

raise usererror('

下列訂單狀態不符: \n%s\n請選擇未處理的清單

' % ','

.join(records_undraft_names))

return

super().default_get(fields_list)

defaction_confirm(self):

records = self._get_all_complains(self._context['

active_ids'])

records.write()

def_get_all_complains(self, record_ids):

return self.env['

my.customer.complain

'].search([('

id', '

in', record_ids)])

簡單說下:default_get是預處理方法,會在form頁面彈出前呼叫。action_confirm是在form頁面彈出後點選確認時呼叫。

self._context['

active_ids

']

上述**可以獲取選擇記錄的id列表,根據這個列表可以獲取記錄。

2、建立my_customer_complain_transient.xml,在__manifest__.py中引入。

xml version="1.0" encoding="utf-8"

?>

<

odoo

>

<

record

id="view_my_customer_complain_transient"

model

="ir.ui.view"

>

<

field

name

="name"

>view.my.customer.complain.transient

field

>

<

field

name

="model"

>my.customer.complain.transient

field

>

<

field

name

="arch"

type

="xml"

>

<

form

string

="提示"

>

<

group

>

<

p>

即將進行批量確認,是否繼續?

p>

group

>

<

footer

>

<

button

name

="action_confirm"

string

="確認"

type

="object"

class

="btn-primary"

/>

<

button

string

="取消"

class

="btn-secondary"

special

="cancel"

/>

footer

>

form

>

field

>

record

>

odoo

>

3、在my_customer_complain.xml中增加如下內容,把之前context分組的條件去掉:

<

act_window

id="action_my_customer_complain_multi_confirm"

name

="批量確認"

src_model

="my.customer.complain"

res_model

="my.customer.complain.transient"

view_mode

="form"

key2

="client_action_multi"

/>

id: 唯一標記

src_model: 批量確認按鈕新增的模型

res_model: 呼叫的模型

view_mode: 彈出框的型別,預設是列表,這裡填form,為了和使用者更好的互動

key2: 固定寫法,不加沒有按鈕

按照上述定義完後,公升級下,按鈕就會出現在頁面中。點選通過預處理方法判斷後,就會呼叫預先定義的form進行展示。

沒有狀態不符的記錄,就彈出form:

確認就批量完成記錄了。

這樣列表基本上就搞的差不多了,後面我們搞下kanban吧。

,帶目錄

odoo12 修行提公升篇之 自定義訊息彈框 (三)

在odoo12開發過程中很可能會遇到部分頁面需要進行訊息提示的情況。odoo12中可以使用raise丟擲如usererror warning等異常進行訊息提示,但是效果不友好。上面有個odoo server error提示,很不美觀,並且在dialog框中彈出提示時,存在訂單行字段值丟失的情況。方案...

odoo12遇到的錯誤

odoo11專案移到odoo12上時出現的錯誤。odoo.tools.convert.parseerror 無效檢視 原因 無法識別檢視 解決辦法 檢查檢視是否又單詞拼寫或者別的語法錯誤 odoo12 中需要加name屬性 需要新增name屬性,for屬性 如果標籤中使用了class fa fa 則...

原始碼安裝ODOO12

要從原始碼安裝 odoo,我們首先要從 github 上轉殖一套 odoo 源 mkdir home tderp conda envs odoo12 odoo dev 在odoo12虛環境下建立工作目錄 cd home tderp conda envs odoo12 odoo dev 進入工作目錄 ...