我正在使用Odoo v8。目前我创建了一个弹出窗口(do_action函数),里面有一棵树。
这就是视图。
<record id="view_mcu_record_popup_form" model="ir.ui.view">
<field name="name">mcu.record.popup.form</field>
<field name="model">mcu.record</field>
<field name="context">{'default_parent_mcu_data_id': 479}</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="name" readonly="1" />
</group>
<field name="mcu_data_ids" domain="[('parent_mcu_data_id', '=', 479)]" context="[('default_parent_mcu_data_id', '=', 479)]" widget="one2many_list">
<tree editable="bottom" create="true" delete="true">
<field name="name" />
<field name="val_alphabet" />
<field name="val_float" />
<field name="val_yesno" />
<field name="ref_range" />
<field name="unit" />
<field name="highlight" />
<field name="note" />
</tree>
</field>
</sheet>
<footer>
<button name="save_data" string="Save" type="object" class="oe_highlight" />
or
<button string="Cancel" class="oe_link" special="cancel" />
</footer>
</form>
</field>
</record>我想为字段指定默认值,如您所见,我将
<field name="context">{'default_parent_mcu_data_id': 479}</field>
<field name="mcu_data_ids" domain="[('parent_mcu_data_id', '=', 479)]" context="[('default_parent_mcu_data_id', '=', 479)]" widget="one2many_list">这两行什么也不做。新行parent_mcu_data_id保持为空。
如何从视图给它们一个默认值(请不要从模型中)。
在这里,我把我给do_action函数的变量
var new_tree_action = {
type: "ir.actions.act_window",
name: act_title,
res_model: "mcu.record",
res_id: this.field_manager.datarecord.id,
view_mode: "form",
view_type: "form",
views: [[false, "form"]],
target: "new",
context: {
"default_patient_mcu_id": this.field_manager.datarecord.id,
"default_parent_mcu_data_id": 479,
"context_id": context_id,
"context_parent_id": context_parent_id,
"variety": context_variety,
"ref_range": context_ref_range,
"note": context_note,
"highlight": context_highlight,
"unit": context_unit,
"res_id": context_res_id,
},
}我稍后使用ir_model_data.call("get_object_reference", ["medical_checkup", view_id]).then(function(results) {填充视图id [[false, "form"]]。
为了给出更多的信息,我决定给出一个模型的提示
class McuRecordInherit(models.Model):
_auto = True
_inherit = "mcu.record"
_description ="Medical Checkup Record"
mcu_data_ids = fields.One2many("mcu.data", "patient_mcu_id", string="Medical Checkup Data")发布于 2018-04-20 20:44:59
如果在mcu.record模型中声明了parent_mcu_data_id字段,则@CZoellner的答案是正确的。但是,如果它位于关系字段mcu_data_ids所指向的模型中,请执行以下操作:
将字段parent_mcu_data_id添加到树视图中,否则domain和带有default_键的context将不起作用:
<field name="mcu_data_ids" domain="[('parent_mcu_data_id', '=', 479)]" context="[('default_parent_mcu_data_id', '=', 479)]" widget="one2many_list">
<tree editable="bottom" create="true" delete="true">
<field name="name" />
<field name="val_alphabet" />
<field name="val_float" />
<field name="val_yesno" />
<field name="ref_range" />
<field name="unit" />
<field name="highlight" />
<field name="note" />
<field name="parent_mcu_data_id" />
</tree>
</field>并删除您在上面编写的字段context (它是record标签的子级)。它在ir.ui.view中什么也不做。
发布于 2018-04-20 20:47:14
您必须更新不在视图中的操作的上下文。在呈现视图时,已经计算了默认值。
如果从另一个视图的按钮打开表单视图,请更新其上下文:
<button name="do_action" string="Action"
context="{'default_field_another_model': 'default'}" />https://stackoverflow.com/questions/49941745
复制相似问题