我创造了一个关于模型的状态
state = fields.Selection([
('new', 'New'),
('draft', 'Draft'),
('approved', 'Approved')
],default='new')我制作的菜单项目是不同的用户和管理。但是在管理组中,添加筛选器搜索后会出现一个错误。
<record id="view_admin_filter" model="ir.ui.view">
<field name="name">Admin</field>
<field name="model">mymodels</field>
<field name="arch" type="xml">
<search string="Admin">
<filter string="Draft" name="state" domain="[('state','=','draft')]"/>
</search>
</field>
</record>和
<record id="open_module_tree_admin" model="ir.actions.act_window">
<field name="name">Admin</field>
<field name="res_model">mymodels</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="context">{
"search_default_state": 1,
"default_state": 1}
</field>
<field name="domain">[]</field>
<field name="view_ids" eval="[(5, 0, 0),
(0, 0, {'view_mode': 'tree', 'view_id': ref('view_admin_tree')}),
(0, 0, {'view_mode': 'form', 'view_id': ref('view_admin_form')})]"/>
<field name="search_view_id" ref="view_admin_filter"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to create.
</p>
</field>
</record>我发现了这样一个错误
ValueError: Wrong value for mail.mail.state: 1我试过像这样替换它
"search_default_state": 'draft',
"default_state": 'draft'}但它还是不起作用,而且出错了
ValueError: Wrong value for mail.mail.state: u'draft'我该怎么修呢?
发布于 2018-11-23 11:03:27
正如您所说的,您正在为状态设置一个默认值,在代码中的某个位置使用一个不在选择中的值。
例如,当你这样做的时候:
"default_state": 1 这将导致此错误的发生,因为我确信1不是有效值,相反,这样做是正确的。
"default_state": 'draft'但只有当你的选择有这个价值‘草案’。
在XML中应该知道的一件事是,从操作定义中删除上下文代码不会将其从数据库中删除(您将始终遇到相同的问题)。
要解决此问题,请从代码中删除此默认值,然后一步一步地执行,并确保升级模块并重新启动服务器。
<record id="open_module_tree_admin" model="ir.actions.act_window">
<field name="name">Admin</field>
<field name="res_model">mymodels</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="context">{}</field> <!-- this will update the context to {} -->
.....
....并检查python代码中的默认值或onchange事件,确保没有将state字段设置为错误的值。
fields.Selection(.... default='draft')希望这对你有帮助
对于你的过滤器,不要像你的字段名那样给它们起名字
<filter string="Draft" name="draft_state" domain="[('state','=','draft')]"/>通过这种方式,您可以在操作的上下文中应用此筛选器,如:*
{'search_default_draft_state': 1}我觉得更安全。
https://stackoverflow.com/questions/53436963
复制相似问题