odoo中many2one字段的神奇用法。

location_id = fields.Many2one(
        'stock.location', 'Location',
        compute="_compute_location_id", store=True, precompute=True,
        index=True, readonly=True, required=True, check_company=True,
        help="This is the location where the product to repair is located.",
        states={'draft': [('readonly', False)], 'confirmed': [('readonly', True)]})

解释:
这是一个Odoo模型中的Many2one字段,它的名称是location_id。该字段的作用是指定一个产品待修复的位置,它引用了另一个名为stock.location的Odoo模型。该字段的其他属性如下:

compute=“_compute_location_id”:该字段是一个计算字段,它的值是通过计算方法_compute_location_id得出的。这意味着该字段的值不是通过用户手动输入或其他字段自动填充得到的,而是通过一个自定义方法计算得到的。
store=True:该属性将计算字段的值存储在数据库中,以便在查询时提高性能。这意味着当记录保存时,计算字段的值将被计算并写入数据库中。但是,由于该字段是计算字段,因此实际上该属性在这里并没有用处。
precompute=True:该属性告诉Odoo,在查询数据时预先计算该字段的值,以便在后续的查询中加快速度。该属性通常用于计算开销较大的字段,以提高查询性能。
index=True:该属性将该字段的值建立索引,以便在查询时加速。这通常在需要经常查询该字段的值时使用。
readonly=True:该属性将该字段设置为只读,不能由用户手动修改。
required=True:该属性指定该字段为必填字段,意味着在保存记录时必须提供该字段的值,否则会产生错误。
check_company=True:该属性指定该字段的值将被检查以确保它与记录所属的公司相对应。这通常在多公司环境下使用,以确保数据的正确性。
help=“…”:该属性提供了该字段的帮助信息,用于解释该字段的作用和用途。
states={‘draft’: [(‘readonly’, False)], ‘confirmed’: [(‘readonly’, True)]}:该属性指定了该字段的状态,它是一个字典,键为状态名称,值为该状态下该字段的其他属性。在上述代码中,该字段的状态是由另一个字段的值(例如,状态字段)决定的。在状态为’draft’时,该字段是可编辑的,而在状态为’confirmed’时,该字段是只读的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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字段传递值的操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值