create 方法是用于创建新记录的模型方法。其底层逻辑主要涉及以下几个步骤:
1创建一个新的记录对象(record)并将默认值设置为模型中定义的字段默认值。
2将传入的参数中的值赋值给记录对象中对应的字段。
3调用记录对象的 create 方法,该方法会将新记录插入到数据库中。
4如果在创建的数据中有password字段会自动将其加密,加密之后再写入到数据库中
class MyModel(models.Model):
_name = 'my.model'
name = fields.Char()
description = fields.Text()
my_record = self.env['my.model'].create({
'name': 'Test',
'description': 'record.',
'password':'123456'
})
在上面的代码中,我们通过 env 属性获取了当前环境中的 my.model 模型,并调用了 create 方法来创建一条新的记录。传入的参数为一个字典,包含了我们想要设置的字段值。
在实际使用中,可能还需要进行一些额外的操作,如检查用户权限、验证输入数据的有效性等。
支持批量写入:
可以通过传入一个记录列表来一次性创建多条记录,例如:
my_records = self.env['my.model'].create([
{'name': 'Record 1', 'description': 'Description 1'},
{'name': 'Record 2', 'description': 'Description 2'}
])
支持创建自关联记录:如果模型中定义了自关联字段,可以在创建记录时通过该字段创建自关联记录,例如:
class MyModel(models.Model):
_name = 'my.model'
name = fields.Char()
parent_id = fields.Many2one('my.model')
my_record = self.env['my.model'].create(
{'name': 'Test', 'parent_id': my_parent_record.id}
)