客戶需求總是不斷啊...
批處理我們得先有個按鈕啊,加吧,加的過程中就加上了批量處理方式了。
在加按鈕之前還要說下odoo中常用的三類模型,因為,一種我們沒見過的模型即將登場...
基本模型:model.model,儲存資料記錄的模型,不會定期刪除
瞬態模型:model.transientmodel,瞬態模型,資料會被定期刪除,常用於與使用者的臨時互動
抽象模型:model.abstractmodel,抽象模型,不會存資料(還得研究研究,這裡我嘗試用了以下,一直報錯,沒咋搞懂,希望多交流)
這裡我們用到了瞬態模型
1、建立my_customer_complain_transient.py檔案,再init.py中引入。
方法內容先不管。
#簡單說下:default_get是預處理方法,會在form頁面彈出前呼叫。action_confirm是在form頁面彈出後點選確認時呼叫。-*- 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)])
self._context['上述**可以獲取選擇記錄的id列表,根據這個列表可以獲取記錄。active_ids
']
2、建立my_customer_complain_transient.xml,在__manifest__.py中引入。
xml version="1.0" encoding="utf-8"3、在my_customer_complain.xml中增加如下內容,把之前context分組的條件去掉:?>
<
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
>
<id: 唯一標記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"
/>
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 進入工作目錄 ...