文章转载自:http://www.javashuo.com/article/p-gctkgcjp-en.htmlhtml
一、查询操做
sale_id = self.env['sale.order'].search([])
env将对象实例化,search进行搜索,能够根据需求添加搜索条件
search_count([]) 查询数量
二、建立操做
values 中放的是res.car中以前建立好的字段,点击按钮时会执行orm_test含函数执行自动建立
@api.multi
def orm_test(self):
values = {
"name": "car",
"sex":'nan',
}
self.env["res.car"].create(values)
三、修改操做
1.先search查找要修改的内容
object = self.env["res.car"].search(["name" "=" "car"])
2.创建修改的字典值
values = {
"name": "car1",
"sex":'nv',
}
3.进行修改操做
object.write(values)
四、浏览操做 browse()
obj = self.env['res.partner'].browse([])
browse([])的条件为一个的时候能够不用放入列表中
返回的obj是一个字符集,能够用for遍历,全部的属性均可以用 “遍历值.属性名”进行浏览
for o in obj:
print o.name,o.company
五、建立操做,对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>
六、修改操做,重写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
七、删除操做,
示例代码: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前端