您好,我正在使用Odoo10,并且已将某些产品分配给类别。在我的销售订单屏幕上,我有2个选择框,一个是“地毯”,另一个是“地板”。下面是我显示某些字段的代码
@api.onchange('squarebox')
def _onchange_default_code(self):
if self.flooring2:
self.boxes = (self.squaremtr) / (self.squarebox or 1)
self.squaremtrsold = (self.squarebox or 1) * (self.suggestbox)
我不是在使用选择字段,而是想知道是否有可能基于产品所在的类别来执行IF语句。因此,代替if self.flooring2:
之类的东西
如果self.productid属于“地毯”类别:
答案 0 :(得分:1)
您的XML文件:
<record id="category_flooring" model="product.category">
<field name="name">Flooring</field>
<field name="type">normal</field>
<field name="property_cost_method">standard</field>
<field name="property_valuation">manual_periodic</field>
</record>
<record id="category_carpet" model="product.category">
<field name="name">Carpet</field>
<field name="type">normal</field>
<field name="property_cost_method">standard</field>
<field name="property_valuation">manual_periodic</field>
</record>
@api.onchange('product_id')
def _onchange_default_code(self):
if self.product_id.categ_id.id == self.env.ref('your_module_name.category_flooring').id:
# Your code belongs to flooring category
elif self.product_id.categ_id.id == self.env.ref('your_module_name.category_carpet').id:
# Your code belongs to carpet category
答案 1 :(得分:0)
如果我理解正确,您希望根据同一记录的其他字段的值来显示或隐藏某些字段。
为此,请使用表单视图定义上的invisible
属性,而不是python函数。我将使用装饰有@api.onchange
的python函数来计算依赖于squarebox
的其他值。
例如参见第227行周围的addons / sale / views / sale_views.xml:
<field name="validity_date" attrs="{'invisible': [('state', 'in', ['sale', 'done'])]}"/>
以上行将普通英语翻译为:显示validity_date
字段,除非state
字段已出售或完成。