many2one和one2many关系说明

many2one和one2many关系说明

  1. 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这个字段。
后台显示为
在这里插入图片描述

对应的前台显示为
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Odoo中,可以通过Many2one字段给Many2many字段传递值。这可以通过使用Odoo的特殊语法和API来实现。 具体方法如下: 1. 在Many2one字段对应的模型中,添加一个Many2many字段,用于存储传递的值。例如,我们在模型A中添加一个Many2many字段,用于存储传递给模型B的值。 ```python class ModelA(models.Model): _name = 'model.a' name = fields.Char(string='Name') value_ids = fields.Many2many(comodel_name='model.b', string='Values') ``` 2. 在Many2one字段对应的模板中,添加一个Many2many字段的下拉菜单,用于选择传递的值。这可以通过使用Odoo的特殊语法和API来实现。例如,我们在模板中添加一个下拉菜单,用于选择传递给模型B的值。 ```xml <field name="value_ids" widget="many2many_tags"/> ``` 3. 在Many2one字段对应的模型中,添加一个按钮,用于触发传递操作。按钮的onClick方法中,通过API获取Many2many字段的值,并将其传递给Many2one字段对应的记录中。例如,我们在模型A中添加一个按钮,用于触发传递操作。 ```python @api.multi def transfer_values(self): for record in self: values = record.value_ids.ids record.other_model_id.write({'many2many_field': [(6, 0, values)]}) ``` 在上述代码中,我们通过API获取Many2many字段的值,并将其传递给Many2one字段对应的记录中。 通过上述方法,我们可以实现Many2one字段给Many2many字段传递值的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值