报表
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user