首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >默认情况下One2Many计数继续one2many取消链接

默认情况下One2Many计数继续one2many取消链接
EN

Stack Overflow用户
提问于 2016-10-27 04:32:10
回答 1查看 44关注 0票数 0

我需要计算one2many中记录的编号,我可以使用以下方法来计算:

代码语言:javascript
复制
def update_cust(self,cr,uid,ids,context=None):
    current_obj = self.browse(cr,uid,ids[0])
    one2many_ids=self.pool.get('customer.test').search(cr,uid,[], count=True)

    if one2many_ids==0:
        one2many_ids=1
        count=one2many_ids
    elif one2many_ids<11:
        one2many_ids=one2many_ids+1
        count=one2many_ids
    elif one2many_ids==11:
        return True
    elif not one2many_ids:
        count=one2many_ids=11
    else:
        one2many_ids=12
        count=one2many_ids
    self.pool.get('customer.test').create(cr,uid,{
                            'cust_id':current_obj.id,
                            'customer':current_obj.customer.id,
                            'street':current_obj.street,
                            'phone':current_obj.phone,
                            'cust_address':current_obj.cust_address.id,
                            'code':count-1
                    })
    return True

虽然我需要做的是,如果一个打开一个记录并添加一个新的记录,那么下一个记录必须从11.& one2many中的记录总数最多必须是10条one2many定义和类定义:

代码语言:javascript
复制
class customer_test(osv.osv):
    _name="customer.test"
    _columns={
            'customer':fields.many2one('res.partner','Customers',ondelete="cascade"),
            'cust_id':fields.many2one('customer.test','CustId'),
            'street':fields.char('Street',size=40),
            'phone':fields.integer('Phone'),
            'cust_address':fields.many2one('res.partner.address','Address'),
            'cust_address2':fields.many2one('res.partner.address','Secondary Address'),
            'cust_one2many':fields.one2many('customer.test','cust_id',''),
            'code' : fields.integer('Code'),
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-27 10:01:59

代码语言:javascript
复制
    def update_cust(self,cr,uid,ids,context=None):
    current_obj = self.pool.get('customer.test').browse(cr,uid,ids[0])
    code=current_obj.code+1
    count=one2many_ids=self.pool.get('customer.test').search(cr,uid,[('cust_id','=',current_obj.id)], count=True)
    vals=self.pool.get('customer.test').search(cr,uid,[('id','=',current_obj.id)])
    sequence_obj = self.pool.get('customer.test')
    seq_id = sequence_obj.search(cr, uid, [('id', '=', current_obj.id)])   
    if count==0:
        sequence_obj.write(cr, uid, seq_id, {'code': 1})      
    while current_obj.id in vals and count < 10:
        sequence=self.pool.get('customer.test').browse(cr,uid,ids[0]).code
        self.pool.get('customer.test').create(cr,uid,{
                'cust_id':current_obj.id,
                'customer':current_obj.customer.id,
                'street':current_obj.street,
                'phone':current_obj.phone,
                'cust_address':current_obj.cust_address.id,
                'code':sequence})
        sequence_obj.write(cr, uid, seq_id, {'code': sequence+1})      
        return True
    return True

这就是我问题的解决办法

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40276172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档