如何在表单视图odoo中使所有字段只读?
How to make all fields readonly in form view odoo?
我试图在 odoov10 中将表单视图中的所有字段设置为只读。是否有任何 python 方法可以获取所有表单视图字段并将其属性更改为 readonly="True"?
我不知道这是否是正确的方法,但您可以使用一个解决方法:
@api.model
def fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False):
res = super(Lead, self).fields_view_get(view_id=view_id, view_type=view_type, toolbar=toolbar, submenu=submenu)
if view_type == 'form':
res['arch'] = self.fields_view_get_address(res['arch'])
# res contains the view form, and you can manipulate res string, as you desired.
return res
或者,您可以禁用表单视图中的编辑选项,方法是:
<field ... edit="false" />
您可以将 <field name="perm_write" eval="False"/>
添加到当前型号的 ir.model.access
记录中。这是一个例子:
<record id="access_stock_return_picking_group_stock_manager" model="ir.model.access">
<field name="name">Permission Name</field>
<field name="model_id" ref="model_stock_return_picking"/>
<field name="group_id" ref="stock.group_stock_manager"/>
<field name="perm_read" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_unlink" eval="True"/>
<field name="active" eval="True"/>
</record>
有关详细信息,请查看 Odoo Documentation - Access Control
在 Odoo 12 上,它只能通过设置 readonly="True" (<- CamelCase) 来工作。使用 edit="False" 没有任何反应...
I did like this -
<record id="hr_expense_inehrited" model="ir.ui.view">
<field name="name">name</field>
<field name="model">hr.expense</field>
<field name="inherit_id"
ref="expense_extended.hr_expense_form_view1"/>
<field name="arch" type="xml">
<xpath expr="/form/sheet/div/h1/field[@name='name']"
position="attributes">
<attribute name="readonly">1</attribute>
</xpath>
</field>
</record>
我试图在 odoov10 中将表单视图中的所有字段设置为只读。是否有任何 python 方法可以获取所有表单视图字段并将其属性更改为 readonly="True"?
我不知道这是否是正确的方法,但您可以使用一个解决方法:
@api.model
def fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False):
res = super(Lead, self).fields_view_get(view_id=view_id, view_type=view_type, toolbar=toolbar, submenu=submenu)
if view_type == 'form':
res['arch'] = self.fields_view_get_address(res['arch'])
# res contains the view form, and you can manipulate res string, as you desired.
return res
或者,您可以禁用表单视图中的编辑选项,方法是:
<field ... edit="false" />
您可以将 <field name="perm_write" eval="False"/>
添加到当前型号的 ir.model.access
记录中。这是一个例子:
<record id="access_stock_return_picking_group_stock_manager" model="ir.model.access">
<field name="name">Permission Name</field>
<field name="model_id" ref="model_stock_return_picking"/>
<field name="group_id" ref="stock.group_stock_manager"/>
<field name="perm_read" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_unlink" eval="True"/>
<field name="active" eval="True"/>
</record>
有关详细信息,请查看 Odoo Documentation - Access Control
在 Odoo 12 上,它只能通过设置 readonly="True" (<- CamelCase) 来工作。使用 edit="False" 没有任何反应...
I did like this -
<record id="hr_expense_inehrited" model="ir.ui.view">
<field name="name">name</field>
<field name="model">hr.expense</field>
<field name="inherit_id"
ref="expense_extended.hr_expense_form_view1"/>
<field name="arch" type="xml">
<xpath expr="/form/sheet/div/h1/field[@name='name']"
position="attributes">
<attribute name="readonly">1</attribute>
</xpath>
</field>
</record>