嗨,我是Odoo的新手,现在我有2个型号,如下所示:
class HumanResource(models.Model):
# _name = 'hr.employee'
_inherit = 'hr.employee'
food_ids = fields.One2many(
'hr.employee.food',
'food_id',
string='Food Cost'
)
class HrFood(models.Model):
_name = "hr.employee.food"
_description = "Food"
food_id = fields.Many2one('hr.employee', string='Food', default=lambda self: self.env['hr.employee'].id)
# food_id = fields.Many2one('hr.employee', 'Food')
# foodtype = ?to?
food_name = fields.Char(
string='Food Name',
help='Please Enter the Food Name'
)
food_category = fields.Selection(
[('breakfast', 'Breakfast'),
('lunch', 'Lunch'),
('teatime', 'Tea Time'),
('dinner', 'Dinner'),
('supper', 'Supper')],
string='Category',
)
food_cost = fields.Float(
string='Food Amount',
digits=(5, 2)
)
我继承了我在“应用程序”中安装的现有hr.employee模型。
下面是继承视图。 enter image description here
然后,当我单击“添加项目”时,它会自动将我选择的员工ID填写到HrFood类的food_id(Many2one字段)中。
这是当前结果,我向上圈出的字段是我想要将默认值设置为我选择的员工的字段。 enter image description here
请帮助我解决我的问题,我是Odoo的newbee。 我的Odoo版本是Odoo 11 预先感谢。
答案 0 :(得分:1)
您可以在HrFood类中添加default_get方法,以获取所选的当前员工ID。
在您的XML字段中添加以下行:
<field name='food_ids' context="{'default_active_id': active_id}"></field>
然后在Python中将函数添加到HrFood类中
@api.model
def default_get(self, fields):
res = super(HrFood, self).default_get(fields)
if self.env.context.get('default_active_id'):
food_id = self.env.context.get('default_active_id')
return res.update({'food_id': food_id})
答案 1 :(得分:1)
您不需要填写字段food_id
,因为Odoo会为您处理。只需使该字段不可见,使用户不必费心填充它。
一些建议:
food_id
重命名为employee_id
,因为实际上在此属性后面有一个雇员。答案 2 :(得分:0)
我用过这个
使用方法:fields_view_get。
当我在树视图中选择一行时,它会打开弹出窗口,上下文中是父模型 ID,而不是选定的行模型 ID。
我认为原因是在调用 fields_view_get 之后,记录数据被填充到选定的行模型中。