many2one 字段不显示值

1 投票
1 回答
1274 浏览
提问于 2025-04-18 03:34

我在把一个“多对一”字段链接到另一个“多对一”字段时遇到了问题。我在下拉列表中看到的是像1、2、3这样的数字(我想这是记录的编号),而不是字段的实际值。

下面,我有三个类:活动代码、活动数据和活动摘要。

活动摘要里有一个叫做“activity_code”的“多对一”字段,它和活动数据有关,而活动数据里也有一个“多对一”字段和活动代码相关。我在活动数据表单的下拉列表中能看到字段的值,这个部分没问题,但在活动摘要表单中却看不到,只能看到单个数字。

有没有人能告诉我为什么会这样,以及我该怎么做才能显示正确的值,而不是这些数字?下面是我的代码。

活动代码

class activity_yearcode(osv.osv):
 _name = "budget.activity_code"
 _description = "Activity Year Code"
 _rec_name = "activity_code"
 _columns = {
    'activity_code' : fields.char("Activity Code", size=64, required=True),
    'activity_name' : fields.char("Activity Name", size=128),
    'act_status' : fields.selection([
                ('1', 'All'),
                ('2', 'Active'),
                ('3', 'Inactive'),
                ], 'Status'),
    }
_sql_constraints = [
    ('activity_code_unique', 'UNIQUE(activity_code)', 'Each activity code is unique.'),
]

活动数据 - 一切正常

class activity_data(osv.osv):

_name = "management.activity_data"
_description = "Activity Data"
_rec_name = "activity_data_num"
_columns = {
    'activity_data_num' : fields.char('activity_data_num', size=16),
    'activity_code' : fields.many2one( "budget.activity_code","Activity Code",required=True),
    'management_unit_code' : fields.many2one("budget.org_table","Management Unit Code", required=True),
}
_defaults = {
    'activity_data_num': lambda self,cr,uid,context={}: self.pool.get('ir.sequence').get(cr, uid, 'management.activity_data'),
}
_sql_constraints = [
    ('activity_data_num', 'UNIQUE(activity_data_num)', 'Each activity_data_num is unique.'),
]

活动摘要 - 在这个模型中,我在下拉列表中看到的是单个数字,而不是“activity_code”字段的实际值。

class activity_summary(osv.osv):
_name = "work.activity_summary"
_description = "Activity Summary"
_columns = {
    'activity_code' : fields.many2one("management.activity_data", "Activity Code", ondelete= "no action", required=True ),
    'management_code' : fields.related("activity_code", "activity_data_num", "management_unit_code", type = "char", string = "Management code"),
'region_id' : fields.char("Region ID", size=64, required=True),
    'daily_prod' : fields.integer("Daily Prod"),
    'deviation' : fields.integer("Deviation Level"),

             }

请帮帮我..提前谢谢你。

1 个回答

1

试试这个代码,

class activity_summary(osv.osv):
    _name = "work.activity_summary"
    _description = "Activity Summary"
    _columns = {
        'activity_code' : fields.many2one("budget.activity_code", "Activity Code", ondelete= "no action", required=True ),
        'management_code' : fields.related("activity_code", "activity_data_num", "management_unit_code", type = "char", string = "Management code"),
        'region_id' : fields.char("Region ID", size=64, required=True),
        'daily_prod' : fields.integer("Daily Prod"),
        'deviation' : fields.integer("Deviation Level"),
    }

你其他的代码也没问题。如果你在获取值的时候遇到任何问题,可以试试这个类,随时问我。

希望这能帮你获取到值。

撰写回答