Odoo 10 - 从product_uom获取特定记录的ID

时间:2017-07-13 01:39:37

标签: openerp

我在系统中定义了以下自定义UoM。

我有一个产品的扩展模型,我想以编程方式查看此特定记录的ID,因此我可以在onchange方法中使用它。

由于手动创建了类型,我不想硬编码id,因为之前可能已经定义了其他UoM。你如何从这个模型(product.uom)得到对应于" name"的特定id。 =" MILES" ?

 id | create_uid |  name  | rounding | write_uid | uom_type |         write_date         | factor | active |        create_date         | category_id
----+------------+--------+----------+-----------+----------+----------------------------+--------+--------+----------------------------+-------------
 20 |          1 | MILES  |    0.001 |         1 | bigger   | 2017-07-12 03:42:25.363007 |  0.001 | t      | 2017-07-12 03:33:27.251635 |           1

2 个答案:

答案 0 :(得分:3)

您可以尝试使用以下ORM search()方法:

self.env['product.uom'].search([('name', '=', 'MILES')], limit=1).id

答案 1 :(得分:1)

除Odedra之外的第二种方法是使用外部ID。但是您必须在客户端(在“设置”下)自行提供单元,或者将自定义模块中的单元作为xml数据记录提供,这已经需要ID。

假设外部ID为my_module.my_unit_of_measure,在Odoo python代码中,您可以通过以下方式获取:

self.env.ref('my_module.my_unit_of_measure')

在xml或csv文件中也有一些可能性:

<record id="my_product" model="product.product">
    <!-- required fields -->
    <field name="uom_id" ref="my_module.my_unit_of_measure" />
</record>

<!-- using in filters should work too -->
<filter name="filter_my_unit" string="Products with my unit"
    domain="[('uom_id', '=', ref('my_module.my_unit_of_measure')" />