如何在Odoo 8中修改属性字段的默认值?

时间:2016-08-17 11:48:16

标签: xml python-2.7 openerp odoo-8 default-value

我正在尝试修改合作伙伴的销售价格表的默认值(字段property_product_pricelist,选项卡销售和购买,模型res.partner)。似乎这个默认值是通过XML引入的(因为该字段的类型为 property ),将记录添加到ir.property模型中:

<record id="list0" model="product.pricelist">
    <field name="name">Public Pricelist</field>
    <field name="type">sale</field>
</record>
<record id="ver0" model="product.pricelist.version">
    <field name="pricelist_id" ref="list0"/>
    <field name="name">Default Public Pricelist Version</field>
</record>
<record id="item0" model="product.pricelist.item">
    <field name="price_version_id" ref="ver0"/>
    <field name="base" ref="list_price"/>
    <field name="sequence">1000</field>
    <field name="name">Default Public Pricelist Line</field>
</record>

<!--
Property
-->
<record forcecreate="True" id="property_product_pricelist" model="ir.property">
    <field name="name">property_product_pricelist</field>
    <field name="fields_id" search="[('model','=','res.partner'),('name','=','property_product_pricelist')]"/>
    <field eval="'product.pricelist,'+str(ref('list0'))" name="value"/>
</record>

所以我猜(我没试过),如果你修改这条XML记录,你会改变默认值,例如:

<record forcecreate="True" id="product.property_product_pricelist" model="ir.property">
    <field name="name">property_product_pricelist</field>
    <field name="fields_id" search="[('model','=','res.partner'),('name','=','property_product_pricelist')]"/>
    <field eval="'product.pricelist,'+str(ref('my_default_pricelist'))" name="value"/>
</record>

问题是我想根据其他字段(user_id)引入不同的默认值。我的意思是,如果user_id是ID为{em> 1 的res.users,我希望公共价目表作为默认价格表,否则,我想要价目表由我(my_default_pricelist)创建的默认值。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

如果你想要条件默认值,你必须转移到Python。

尝试扩展模型并重新定义字段,但这次使用 <div class="btn-group" data-toggle="buttons"> <label class="btn btn-primary active"> <input type="radio" id="physical-option" onclick="alert('Physical!')" checked="checked" /> Physical </label> <label class="btn btn-primary"> <input type="radio" id="scenery-option" onclick="alert('Scenery!')" /> Scenery </label> </div> 参数。 fnct=compute_method是每次运行以设置字段默认值的方法。

compute_method字段正在使用的property类是property_product_pricelist类的扩展。转到function并找到openerp/osv/fields.py类的定义并查看参数。