将列表记录传递给 odoo 中的 many2many 字段
Pass list records to many2many field in odoo
我创建了一个 wiz 来获取字段“catagory_select”中的产品,请查看下面的代码:
class CategorySelect(models.TransientModel):
_name = 'product.group'
category_select = fields.Many2many('product.category', string='Category')
def start_search_product(self):
wiz_form = self.env.ref('product_filter.get_products_form_all', False)
for rec in self.category_select:
product_res = self.env['product.product'].search([('categ_id', '=', rec.ids)])
print('^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^', product_res)
return {
'type': 'ir.actions.act_window',
'name': "Product Filtered",
'res_model': 'product.selection',
'target': 'new',
'view_id': wiz_form.id,
'view_mode': 'form',
}
}
这里我所做的是我创建了一个方法,该方法 return 是一个向导,但我不知道如何将“product_res”传递给另一个向导中的 many2many 字段这就是所谓的 return 菜单。
“我们将不胜感激”
您可以在 context
上设置 默认 fields
设置您的值。
ctx = self._context.copy()
ctx.update({'default_m2m_fields': [(6, 0, IDS)]}) # on new wizard the m2m fields set with default on context
您可以使用上下文
将 product_res 传递给另一个向导
1/ 更新您的 start_search_product 以传递 product_res ID:
def start_search_product(self):
product_res_ids = [p.id for p in product_res]
context = {'product_ids': product_res_ids}
return {
'type': 'ir.actions.act_window',
'name': "Product Filtered",
'res_model': 'product.selection',
'target': 'new',
'view_id': wiz_form.id,
'view_mode': 'form',
'context': context,
}
}
2/ 在 ProductSelection 向导的 default_get 函数中获取产品 ID:
product_ids = fields.Many2many('product.product', 'Products')
@api.model
def default_get(self, default_fields):
res = super(ProductSelection, self).default_get(default_fields)
product_ids = self._context.get('product_ids')
res.update({'product_ids': [(6, 0, product_ids)]})
return res
我创建了一个 wiz 来获取字段“catagory_select”中的产品,请查看下面的代码:
class CategorySelect(models.TransientModel):
_name = 'product.group'
category_select = fields.Many2many('product.category', string='Category')
def start_search_product(self):
wiz_form = self.env.ref('product_filter.get_products_form_all', False)
for rec in self.category_select:
product_res = self.env['product.product'].search([('categ_id', '=', rec.ids)])
print('^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^', product_res)
return {
'type': 'ir.actions.act_window',
'name': "Product Filtered",
'res_model': 'product.selection',
'target': 'new',
'view_id': wiz_form.id,
'view_mode': 'form',
}
}
这里我所做的是我创建了一个方法,该方法 return 是一个向导,但我不知道如何将“product_res”传递给另一个向导中的 many2many 字段这就是所谓的 return 菜单。
“我们将不胜感激”
您可以在 context
上设置 默认 fields
设置您的值。
ctx = self._context.copy()
ctx.update({'default_m2m_fields': [(6, 0, IDS)]}) # on new wizard the m2m fields set with default on context
您可以使用上下文
将 product_res 传递给另一个向导1/ 更新您的 start_search_product 以传递 product_res ID:
def start_search_product(self):
product_res_ids = [p.id for p in product_res]
context = {'product_ids': product_res_ids}
return {
'type': 'ir.actions.act_window',
'name': "Product Filtered",
'res_model': 'product.selection',
'target': 'new',
'view_id': wiz_form.id,
'view_mode': 'form',
'context': context,
}
}
2/ 在 ProductSelection 向导的 default_get 函数中获取产品 ID:
product_ids = fields.Many2many('product.product', 'Products')
@api.model
def default_get(self, default_fields):
res = super(ProductSelection, self).default_get(default_fields)
product_ids = self._context.get('product_ids')
res.update({'product_ids': [(6, 0, product_ids)]})
return res