Buenos dias, tardes, noches, tengo un problema al intentar poner un campo de la tabla con la que se relacion el One2many. Tengo el siguiente código:
class Item(models.Model):
_name = "sst.item"
cycle_id = fields.Many2one('sst.cycle', string="Ciclo")
standard_id = fields.Many2one('sst.standard', string="Estándar")
substandard_id = fields.Many2one('sst.substandard', string="Subestándar")
literal = fields.Char(string="Literal")
weight = fields.Float(string="Peso")
description = fields.Text(string="Descripción")
legal_frame = fields.Text(string="Marco Legal")
criterion = fields.Text(string="Criterio")
verification = fields.Text(string="Verificación")
plan_evaluation_id = fields.Many2one('sst.initial.evaluation.by.cycles')
do_evaluation_id = fields.Many2one('sst.initial.evaluation.by.cycles')
verify_evaluation_id = fields.Many2one('sst.initial.evaluation.by.cycles')
act_evaluation_id = fields.Many2one('sst.initial.evaluation.by.cycles')
cycle_name = fields.Char(related='cycle_id.cycle', string="Ciclo")
standard_name = fields.Text(related='standard_id.description', string='Estándar')
substandard_name = fields.Text(related='substandard_id.description', string='SubEstándar')
def test(self):
# Buscar si ya existe una evaluación para este ítem y ciclo específico
evaluation = self.env['sst.item.evaluation'].search([
('item_id', '=', self.id),
('evaluation_id', '=', self.plan_evaluation_id.id)
# Filtrar por evaluación del año en curso
], limit=1)
if evaluation:
view_mode = 'form'
res_id = evaluation.id
else:
view_mode = 'form'
res_id = None # No se asigna ID para crear uno nuevo
return {
'type': 'ir.actions.act_window',
'name': 'Evaluación del Ítem',
'res_model': 'sst.item.evaluation',
'view_mode': view_mode,
'view_id': self.env.ref('sst.view_item_evaluation_form').id,
'target': 'new',
'res_id': res_id,
'context': {
'default_item_id': self.id,
'default_evaluation_id': self.plan_evaluation_id.id,
# Establecer el evaluation_id al actual
'default_item_weight': self.weight,
}
}
class ItemEvaluation(models.Model):
_name = "sst.item.evaluation"
_description = "Evaluación del Ítem"
item_id = fields.Many2one('sst.item', string="Ítem")
evaluation_id = fields.Many2one('sst.initial.evaluation.by.cycles', string="Evaluación por Ciclos")
date = fields.Date(string="Fecha", default=fields.Date.context_today)
compliance = fields.Selection(
selection=[],
string="Cumplimiento"
)
applies = fields.Selection([
('aplica', 'Aplica'),
('no_aplica', 'No Aplica')
], string="Aplica", default='aplica')
responsible = fields.Char(string="Responsable")
observation = fields.Text(string="Observación")
De acá lo importante es el modelo
sst.item.evaluation
El cual tiene un campo Many2One con sst.item, y sst.item tiene varios campos entre ellos weight
item_id = fields.Many2one('sst.item', string="Ítem")
Lo que yo deseo hacer es que en el compliance una de las opciones del selection sea el campo weight del modelo sst.item. Quiero hacer algo asi:
compliance = fields.Selection([
('weight', item_id.weight),
], string="Cumplimiento"
)
Pero no he logrado conseguirlo. Me ayudarían mucho, gracias