Привет, ребята, я новичок в 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, которую я установил в "Приложениях".
Ниже представлен вид наследования. введите описание изображения здесь
Тогда то, что я хочу, - это когда я нажимаю "Добавить элемент", он автоматически заполняет идентификатор сотрудника, который я выбрал в поле food_id (Many2one) в классе HrFood.
Это текущий результат, и поле, в котором я кругом, - это поле, в котором я хочу установить значение по умолчанию в качестве выбранного сотрудника. введите описание изображения здесь
Пожалуйста, помогите мне решить мой вопрос, я новичок в Odoo. И моя версия Odoo - это Odoo 11, спасибо заранее.
Вам не нужно заполнять поле food_id
потому что Odoo будет обрабатывать это для вас. Просто сделайте это поле невидимым, чтобы пользователь не потрудился его заполнить.
Некоторые советы:
food_id
в employee_id
, потому что позади этого атрибута есть сотрудник.Вы можете добавить метод default_get в класс HrFood, чтобы получить текущий идентификатор сотрудника, который выбран.
В поле 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})