(58) 在计算字段提供搜索功能
問題描述:
運單號是在出庫單上后勤填寫的,平時銷售訂單有一個運單號是通過計算字段
從出庫單上獲的,這時,銷售員,要在銷售列表上,輸入運單號 找到對應的銷售訂單
分析:
可以用兩種方法
方法1.字段設置為 store=True , 這樣和其它的普通的字段一樣,可以搜索,有一點
在計算時會很慢,在出庫貨上填寫運單號時,轉半天,影響效率
方法2,字段加上search 加上對應的方法
這個寫邏輯復雜一些,但效率最高
解決:
用方法2:
tracking_number_raw = fields.Text(string='Tracking Number Raw',
compute='_get_tracking_number',search='_tracking_number_raw_search')
??? def _tracking_number_raw_search(self, operator, value,limit=100):
???????? if operator == 'like':
???????????? operator = 'ilike'
???????? stock_pickings = self.env['stock.picking'].search([('picking_type_code','=','outgoing'),
('carrier_tracking_ref',operator,value)])
???????? if stock_pickings :
???????????? domain = [('id', 'in', [sale.id for sale in stock_pickings.sale_id])]
???????? else:
???????????? domain = [('id', '=', 0)]
???????? return domain
---------------------------------
<record id="view_sales_order_filter_inherit" model="ir.ui.view">
??????????? <field name="model">sale.order</field>
??????????? <field name="inherit_id" ref="sale.view_sales_order_filter" />
??????????? <field name="arch" type="xml">
??????????????? <field name="partner_id" position="after">
??
????????????????? <field name="tracking_number_raw" />
??????????????? </field>
??????????????? </field>
??????? </record>
---------------------------------
這樣在列表視圖右上角輸入運單號,有對應的運單號搜索,這樣就可以找到對應的銷售單
重點講解 search 對應的方法
返回是domain? , 對應的字段一定對象要有的字段,像我上面是sale.order對象
id 這個字段一定有的 ,這里可以靈活變化,可換成 name 條件去找,等等,這樣就解決
所有關于字段為 compute 類型的搜索問題。
轉載于:https://www.cnblogs.com/toby2chen/p/7922265.html
總結
以上是生活随笔為你收集整理的(58) 在计算字段提供搜索功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Nginx SSL+tomcat集群配置
- 下一篇: Go非阻塞channel的常见写法