odoo14:create方法的底层逻辑

本文详细介绍了DjangoORM中的create方法,包括创建新记录过程、参数传递、字段默认值设置、密码加密以及自关联字段的使用。展示了如何在Django环境中通过`env`创建和批量创建记录实例,以及处理自关联关系。
摘要由CSDN通过智能技术生成

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}
)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔跑的蜗牛..

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值