簡體   English   中英

具有功能的OpenERP many2one字段

[英]OpenERP many2one field with function

我需要創建many2one字段。但是它需要根據函數中的邏輯過濾數據。然后如何在OpenERP ver 7中實現此功能?

我嘗試使用下面的代碼。但它沒有給出list.just加載為只讀字段:

def _get_users(self, cr, uid, ids, field_name, arg, context=None):
    res = {}
    users_list=[]
    officer_ids = self.search(cr, uid , 'bpl.officer', [('is_user', '=', True)])
    officer_obj = self.browse(cr, uid, officer_ids, context=context)
    for record in officer_obj:
        users_list.append(record.user_id.id) 
    user_obj = self.pool.get('res.users')
    for data in self.browse(cr, uid, ids, context=context):
        res[data.id] = users_list
    return res

_name = "bpl.officer"
_description = "Officer registration details"
_columns = {
    'bpl_company_id':fields.many2one('res.company', 'Company', help='Company'),
    'bpl_estate_id':fields.many2one('bpl.estate.n.registration', 'Estate', help='Estate', domain="[('company_id', '=', bpl_company_id)]"),
    'bpl_division_id':fields.many2one('bpl.division.n.registration', 'Division', help='Division', domain="[('estate_id','=',bpl_estate_id)]"),
    'name': fields.char('Name', size=128, required=True),
    'is_user': fields.boolean('Is User', help="Is System user or not"),
    'user_id': fields.function(_get_users, type="many2one",relation="res.users"),

首先,您創建的功能字段是錯誤的.user_id本身就是任何您在其中使用了一些魔術的功能字段(我不明白)。 請將其更改為many2one字段。

如果要過濾掉某些記錄,則可以在添加user_id字段的xml文件中添加域過濾器。 例如, <field name="user_id" domain="[('is_user', '=', True)]"/>如果is_user是res_partner表中的字段。否則,您可以遍歷fields_view_get函數並添加指定的從那里的域。

首先,使用res.users將user_id設置為many2one字段。

您可以在res.users對象的上下文的基礎上添加上下文並覆蓋搜索方法,並根據邏輯返回記錄。

由於無法添加直接域,因此我認為您需要基於以下上下文覆蓋res.users的搜索方法:

def search(self, cr, uid, args, offset=0, limit=None, order=None, context=None, count=False):
        if context is None:
            context = {}
        users_list = []
        if context.get('test') == 'test':
            officer_ids = OFFICE_OBJ.search(cr, uid , [('is_user', '=', True)])
            officer_obj = OFFICE_OBJ.browse(cr, uid, officer_ids, context=context)
            for record in officer_obj:
                users_list.append(record.user_id.id)
                return users_list
        return super(res_users, self).search(cr, uid, args, offset, limit,
                order, context=context, count=count)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM