在业务逻辑中需要根据用户添加的数据生成model,而不再是通过写在model文件夹下的py文件里了,也就是通过代码生成模型,模型字段。
模型:
return_model = self.env['ir.model'].create({
'model': 'x_model',
'name': 'x_name',
})
ir.model是存储模型的模型,所有的模型信息都存储在这里,创建一个ir.model就是创建了一个模型。
model:模型的英文名字,如:hr.employee 仅支持小写字母,数字下划线的组合,必须以 x_ 开头
model:模型的显示名字,如:员工 ,必须以 x_ 开头
字段:
self.env['ir.model.fields'].create({
'name': 'x_field_name',
'field_description': '字段描述',
'model_id': return_model .id,
'ttype': 'many2one',
'relation': model_id.model,
})
ir.model.fields是存储模型字段信息的模型
name :字段名,相当于x_field_name = fields.Many2one(‘关联表名’,u’字段描述’)中的x_field_name ,必须以 x_ 开头
field_description :字段的中文描述
model_id:此字段隶属于哪个模型,就把模型id放这里
ttype:字段类型,有下图中选择 ,当选择时关联模型时就需要relation字段把关联的模型的model写上。
更多的信息在打开开发者模式后 设置->数据库结构->字段中点开一个查看,需要对哪个赋值
如果在controller下url接口中处理逻辑创建模型及字段,则需要request.request.env[‘ir.model’].sudo().create({values})