odoo ORM操作

1、查询操作   

            sale_id = self.env[‘sale.order‘].search([])   

            env将对象实例化,search进行搜索,可以根据需求添加搜索条件

               search_count([]) 查询数量

2、创建操作   

    values 中放的是res.car中之前创建好的字段,点击按钮时会执行orm_test含函数执行自动创建   

    @api.multi   

    def orm_test(self):   

        values = { "name": "car", "sex":‘nan‘,}   

        self.env["res.car"].create(values)

3、修改操作   

    1.先search查找要修改的内容     

        object = self.env["res.car"].search(["name" "=" "car"])   

    2.建立修改的字典值     

        values = { "name": "car1","sex":‘nv‘, }

    3.进行修改操作     

        object.write(values)

4、浏览操作 browse()   

    obj = self.env[‘res.partner‘].browse([])   

    browse([])的条件为一个的时候可以不用放入列表中   

    返回的obj是一个字符集,可以用for遍历,所有的属性都可以用 “遍历值.属性名”进行浏览   

    for o in obj:     

        print o.name,o.company

5、创建操作,对create函数的重写,   

    前端订单点击保存之后会自动执行create内容,如果我们需要对点击之后进行相应的其他数据的同步刷新操作要对create进行重写操作   

    可以用于实现自动订单编号的生成,   

    @api.model   

    def create(self, vals):     

        vals[‘list_price‘] = 100     

        print vals   

注:vals中包含了前端订单中的说有字段信息及值,可以用vals[‘list_price‘] = 100的方式进行修改   

自动生成订单编号     

1.定义code字段     

2.在create函数中判断code字段的初始值,并修改vals["code"]的值     

@api.model     

    def create(self, vals):       

    if vals.get("code", "new") == "new":         

    vals["code"] = self.env["ir.sequence"].next_by_code(self._name) or "new"       

    result = super(Res.Car, self).create(vals)       

    return result   

3.创建一个squence.xml文件     

    <record id=‘seq_res_car‘ model="ir.sequence">     

    <field name=""></field>     

    <field name="code">res.car</field>     

    <field name="prefix">C%(year)s%(month)s%(day)s</field>     

    <field name="padding">5</field>     

    <field name="auto_reset">True</field>     

    <field name="company+id" eval="False"></field>     

    </record>

6、修改操作,重写write函数   

    只触发被修改的控件,只有有控件陪修改的时候,才会触发write函数执行   

    示例代码,判断values中是否有qty 键,在进行相应的操作   

    @api.multi   

    def write(self, values):     

        if valuees.has_key("qty"):       

        if values["qty"] == 100:         

        values["list_price"] = 10     

        result = super(Res.Car, self).write(vals)     

        return result

7、删除操作,   

    示例代码:self值得是当前所在的类,可以获取当前页面的所有的对象   

    @api.multi   

    def unlink(self):     

        for order in self:       

            if order.state != "draft":         

            raise UserError(u"只能删除草稿状态")     

            result = super(Res.Car, self).unlink()     

        return result

转载于:https://my.oschina.net/u/3915571/blog/3044041

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值