首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打开ERP-功能字段未从代码中调用

打开ERP-功能字段未从代码中调用
EN

Stack Overflow用户
提问于 2014-09-26 19:26:02
回答 2查看 717关注 0票数 0

我正在尝试创建一个函数字段,它将获取成员的当前成员类型,并将其存储在res.partner中的新字段中。但是,每当我创建或编辑成员的成员身份时,都不会调用此代码。但是,如果我删除store属性,函数字段就会按预期工作。请注意,我现在重用了openerp的成员模块并使用了odoo8。我附上了代码,请让我知道我哪里错了。至少当我使用store属性时,我需要调用这个方法。我是否错误地使用了store属性:

代码语言:javascript
复制
from openerp.osv import osv, fields

class partner_member(osv.Model):
    '''Partner'''
    _inherit = 'res.partner'

    def _get_membership_type(self,cr,uid,ids,context=None):
        member_line_obj = self.pool.get('membership.membership_line')

        partner_list = []
        for line in member_line_obj.browse(cr, uid, ids, context=context):
            if line.state == 'paid':
                partner_list.append(line.partner.id)

        return partner_list

    def _current_membership(self, cr, uid, ids, field_name= None, arg=False, context=None):
        res_obj =  self.pool.get('res.partner')
        res_data_obj = res_obj.browse(cr, uid, ids, context=context)

        res=dict()

        for member in res_data_obj:
            if member.member_lines:
                for lines in member.member_lines:
                    if (lines.state == 'paid'):
                        res[member.id] = lines.membership_id.name_template
                        break
                    else:
                        res[member.id] = 'None'
            else:
                res[member.id] = 'None' 

        return res

    _columns = {
        'current_membership':
            fields.function(_current_membership,type='char',
                            string='Current Membership Type',
                            store = {
                                'membership.membership_line':
                                    (_get_membership_type, ['state'], 10)
                            },
                            help="Shows the current membership of a user"),
    }
EN

回答 2

Stack Overflow用户

发布于 2014-09-26 20:42:37

您在_get_membership_type()方法上犯了一个错误。实际上,您只返回与状态==‘res.partner’一致的支付列表。

我认为,无论行的状态如何,都必须返回行中的所有合作伙伴。

代码语言:javascript
复制
def _get_membership_type(self,cr,uid,ids,context=None):
    member_line_obj = self.pool.get('membership.membership_line')

    partner_list = []
    for line in member_line_obj.browse(cr, uid, ids, context=context):
        partner_list.append(line.partner.id)

    return partner_list
票数 0
EN

Stack Overflow用户

发布于 2014-09-27 15:03:04

如果您希望函数_current_membership成为类的方法(正如您所做的那样),则需要将method=True参数添加到字段定义中:

代码语言:javascript
复制
_columns = {
    'current_membership':
        fields.function(_current_membership,type='char',
                        string='Current Membership Type',
                        store = {
                            'membership.membership_line':
                                (_get_membership_type, ['state'], 10)
                        },
                        help="Shows the current membership of a user",
                        method=True),
}

这应该会解决你的问题。

当然,您可以简单地使用store=True让您的字段在对象的任何字段中的每个更改时重新计算。

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

https://stackoverflow.com/questions/26058475

复制
相关文章

相似问题

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