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

Odoo 10 - Get id of a specific record from product_uom

我在系统中定义了以下自定义计量单位。

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

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

 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

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

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

除 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')" />