我在系统中定义了以下自定义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
答案 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')" />