odoo model注意事项-4(个人总结,不喜勿喷)

25.对于compute字段,需要考虑到self是多个记录的情况,self可能包括多个记录,使用for查询

26.对于一个model的看板展示,如果展示记录的多少需要根据这个model的关联model,比如Many2one字段,那么需要在这个字段后写上group_expand='_gbf_m2o',比如这样:

这个写法只是针对机台center_id的筛选

center_id = fields.Many2one('cloud.mrp.working.center', u'机台', group_expand='_gbf_m2o')

@api.model

def _gbf_m2o(self, subs, domain, order):

sub_ids = subs._search([], order=order, access_rights_uid=SUPERUSER_ID)

return subs.browse(sub_ids)

参数,

subs,指视图上显示的有关联数据的机台center_id;

order,按照什么排序;

subs._search查找机台center中符合搜索条件的机台id;

[]里是搜索条件;

return subs.browse(sub_ids),返回的就是机台center对象;

这样就可以展示所有的机台,及时这个机台下并没有那个model的关联记录;

27.对于一个model中的one2many字段的绑定,可以先创建这个model,使用create()方法,然后返回一个对象A,就是创建好后的model对象,再定义one2many绑定model的对象B,self.env[' '],然后将对象A的id赋给B,创建B,create(),A是B的many2one字段,绑定many2one就是意味着绑定one2many,适用于A和B都需要创建的场合;

28.create方法,返回创建好后的对象,可以直接调用create(),也可以考虑继承性的调用,

result = super(cloud_mrp_order, self).create(vals);

31._sql_constraints = [

('name', 'unique(name)', '机台名称唯一'),

]

约束内容:name唯一;

包含三个元素:1)约束名字;2)约束规则(postgresql约束规则);3)违反约束弹出来的警告信息

32.对于未来可能要获取model的id的事件,如果需要通过model的某个字段来获取其id,则考虑加唯一限制,因为搜索条件如果没有唯一限制,则结果可能是多个,比如按照name来查找,name可能是相同的,id就是多个;

33._rec_name = '',指定这个model的实例对象显示的名称,可以指定某个字段;

34.对于判断one2many模型中的某个字段值,可以使用,直接在关联模型中去search这个字段的判断值,且关联主表的many2one字段的id是当前主表数据id,查看是否找的到来进行判断达到目的;

35._order = 'date desc',设置数据的排序方式,按照date字段排序,desc是倒序;

36.default=lambda self: fields.datetime.now(),设置日期的默认值,就是当前日期;

37.设置domain条件,如果设置根据某个字段是大于某个值还是等于某个值,则应该这样写:

domain.extend(['|', ('single_num', '>', 10), ('single_num', '=', 5)])

添加:

domain.append(('single_num', '=', single_num))

38.对于One2many或者Many2many字段,如果需要设置默认值,可以使用这样写:

default=_default_purchase_order,调用方法返回默认值,

@api.model

def _default_purchase_order(self):

purchase_order_obj = self.env['purchase.order'].search(

[('invoice_number', '=', None), ('state', '=', 'purchase')])

return [

(4, order.id) for order in purchase_order_obj

]

39.虚拟表TransientModel,不能使用One2many关联表,因为虚拟表不能被实际表关联,虚拟表可以关联其他表,不能被其他表关联,因为虚拟表会定时清理数据;

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值