我正在制作一個(gè)包裹模型,可以在其中制作包裹并在銷售訂單中使用它,我的模型名稱是 sale.package。class Package(models.Model): _name = 'sale.package' _description = 'Package table' name = fields.Char(string='Name', required=True) width = fields.Float(string='Width') height = fields.Float(string='Height') length = fields.Float(string='Length') maximum_weight = fields.Float(string='Maximum weight')為了在銷售訂單表單中使用它,我繼承了 sale.order 模型并在銷售訂單中添加了一個(gè) Many2many 字段來(lái)選擇以前制作的包裹,我還創(chuàng)建了一個(gè) Onchange 函數(shù)來(lái)更新新制作頁(yè)面中的 One2many 字段在同一銷售訂單中。class SaleOrderPackage(models.Model): _inherit = 'sale.order' packs = fields.Many2many('sale.package', string='Package') package_lines = fields.One2many('sale.package.lines', 'line_name', string='Package Lines') @api.onchange('packs') def _onchange_packs(self): for rec in self: lines = [(5, 0, 0)] for line in self.packs: values = { 'name_on_line': line.name, 'line_width': line.width, 'line_height': line.height, 'line_length': line.length, 'line_maximum_weight': line.maximum_weight, } lines.append((0, 0, values)) rec.package_lines = lines到目前為止,一切都很好,我的新要求是向同一個(gè)銷售訂單添加一個(gè)智能按鈕,點(diǎn)擊它后,必須顯示銷售訂單中所選包裹的樹狀視圖。我已經(jīng)添加了智能按鈕并在 python 文件中定義了一個(gè)函數(shù),它不僅返回所選的而且還返回所有使用該模型制作的包。 def selected_packages(self): print(self.packs) return { 'name': 'Selected Packages', 'domain': [], 'view_type': 'form', 'res_model': 'sale.package', 'view_id': False, 'view_mode': 'tree,form', 'type': 'ir.actions.act_window' }由于我學(xué)習(xí) Odoo 僅一周時(shí)間,因此我無(wú)法弄清楚如何在這種情況下使用域過濾器,請(qǐng)幫忙。提前致謝。
1 回答

天涯盡頭無(wú)女友
TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超9個(gè)贊
如果您只需要顯示選定的包,您只需使用它們的 id 來(lái)過濾記錄。
使用self.packs.ids返回與所選包對(duì)應(yīng)的實(shí)際記錄 ID 列表:
'domain': [('id', 'in', self.packs.ids)],
添加回答
舉報(bào)
0/150
提交
取消