This commit is contained in:
李鹏宇
2026-06-05 15:15:47 +08:00
parent bf3a671966
commit d0a3b3291a
@@ -20,7 +20,7 @@ class AiReportTemplateColumn(models.Model):
field_id = fields.Many2one('ir.model.fields', string='字段',
domain="[('model_id', '=', model_id)]",
help='选择模型字段,自动填充字段名和显示名称')
field_name = fields.Char('字段名', required=True)
field_name = fields.Char('字段名', required=True) # 保持 required=True
label = fields.Char('显示名称',
help='不填则默认使用字段名')
width = fields.Integer('列宽', default=120)
@@ -46,6 +46,32 @@ class AiReportTemplateColumn(models.Model):
if not self.label:
self.label = self.field_id.field_description
# 添加 create 和 write 方法确保 field_name 有值
@api.model_create_multi
def create(self, vals_list):
for vals in vals_list:
# 如果有 field_id 但没有 field_name,自动填充
if vals.get('field_id') and not vals.get('field_name'):
field = self.env['ir.model.fields'].browse(vals['field_id'])
if field.exists():
vals['field_name'] = field.name
if not vals.get('label'):
vals['label'] = field.field_description
# 如果既没有 field_id 也没有 field_name,抛出友好错误
if not vals.get('field_name'):
raise ValidationError(_('列定义必须指定字段名(field_name)或选择字段(field_id)'))
return super().create(vals_list)
def write(self, vals):
# 处理 write 操作
if vals.get('field_id') and not vals.get('field_name'):
field = self.env['ir.model.fields'].browse(vals['field_id'])
if field.exists():
vals['field_name'] = field.name
if vals.get('label') is None and not self.label:
vals['label'] = field.field_description
return super().write(vals)
@api.constrains('color_value', 'cell_color')
def _check_color_value(self):
for rec in self: