many2one和one2many关系说明
-
many2one
class BugAdvanced(models.Model): _inherit='bm.bug' #进阶模型当中新增一个所需时间字段 need_time=fields.Integer('所需时间(小时)') #给bm.bug类的name字段增加help属性 name=fields.Char(help='简要描述发现的bug') stage_id=fields.Many2one('bm.bug.stage','阶段') tag_ids=fields.Many2many('bm.bug.tag',string='标示') deadline = fields.Date('最晚解决日期') progress = fields.Integer('进度')
var foo = ‘bar’;
建一个BugAdvanced的类,继承bm.bug这个模型,在bm.bug这个模型中,增加新的字段如need_time,name,stage_id,tag_ids,deadline,progress.
其中stage_id=fields.Many2one(‘bm.bug.stage’,‘阶段’)为在many个stage中选one(stage)对应在bm.bug.stage表单中。
用它来关联bm.bug.stage表单中的id
后台表单显示如下
最后前台显示效果如下
关联的是id,显示的是name
2.one2many
class bugStage(models.Model):
_name='bm.bug.stage'
_description='bug阶段'
_order='sequence,name'
#字符串相关类型
name=fields.Char('名称')
desc_detail=fields.Text('描述')
status=fields.Selection([('waiting','未开始'),('doing','进行中'),('closed','关闭'),('rework','重测未通过')],'状态')
document=fields.Html('文档')
#数值相关类型
sequence = fields.Integer('Sequence')
percent_pro=fields.Float('进度',(3,2))
#日期类型
deadline=fields.Date('最晚解决日期')
create_on=fields.Datetime('创建时间',default=lambda self:fields.Datetime.now())
#布尔类型
delay=fields.Boolean('是否延误')
#二进制类型
image=fields.Binary('图片')
bug_ids=fields.One2many('bm.bug','stage_id',string='bug')
var foo = ‘bar’;
在bm.bug.stage这个类中建一个bug_ids的关联,统计某个stage对应的bug的个数。
one2many即在one stage中统计many 个bug的个数,这个个数直接应用bm.bug统计id,所以数据库中不存在bug_ids这个字段。
后台显示为
对应的前台显示为