many2one 字段不显示值
我在把一个“多对一”字段链接到另一个“多对一”字段时遇到了问题。我在下拉列表中看到的是像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"),
}
你其他的代码也没问题。如果你在获取值的时候遇到任何问题,可以试试这个类,随时问我。
希望这能帮你获取到值。