如何解决从选股到联系人模型继承搜索视图过滤器-Odoo v13社区
我正在尝试从拣货(就绪,完成...)中将过滤器添加到联系人过滤器中。
具体来说,尝试从 stock.picking 继承我需要的过滤器,然后将其添加到 res.partner (搜索视图联系人)中。
So,I've created a new model.
赞..(.py)
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import models,fields,api
class StockPicking(models.Model):
_inherit = 'stock.picking'
available = fields.Many2one('res.partner',string="Available",domain="[('state','in',('assigned','partially_available'))]")
done = fields.Many2one('res.partner',string="Done",'=','done')]")
视图(.xml)
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record model="ir.ui.view" id="view_res_partner_filter_inherit">
<field name="name">res.partner.filter.inherit</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_res_partner_filter"/>
<field name="arch" type="xml">
<search>
<filter name="available" string="Ready" domain="[('state','partially_available'))]" help="Assigned Moves"/>
<filter name="done" string="Done" domain="[('state','done')]" help="Pickings already processed"/>
</search>
</field>
</record>
</odoo>
图片:
但是,选择过滤器时发生了错误
Erreur:
Odoo Server Error
Traceback (most recent call last):
File "C:\Program Files (x86)\Odoo 13.0\server\odoo\http.py",line 624,in _handle_exception
return super(JsonRequest,self)._handle_exception(exception)
File "C:\Program Files (x86)\Odoo 13.0\server\odoo\http.py",line 310,in _handle_exception
raise pycompat.reraise(type(exception),exception,sys.exc_info()[2])
File "C:\Program Files (x86)\Odoo 13.0\server\odoo\tools\pycompat.py",line 14,in reraise
raise value
File "C:\Program Files (x86)\Odoo 13.0\server\odoo\http.py",line 669,in dispatch
result = self._call_function(**self.params)
File "C:\Program Files (x86)\Odoo 13.0\server\odoo\http.py",line 350,in _call_function
return checked_call(self.db,*args,**kwargs)
File "C:\Program Files (x86)\Odoo 13.0\server\odoo\service\model.py",line 94,in wrapper
return f(dbname,**kwargs)
File "C:\Program Files (x86)\Odoo 13.0\server\odoo\http.py",line 339,in checked_call
result = self.endpoint(*a,**kw)
File "C:\Program Files (x86)\Odoo 13.0\server\odoo\http.py",line 915,in __call__
return self.method(*args,line 515,in response_wrap
response = f(*args,**kw)
File "C:\Program Files (x86)\Odoo 13.0\server\odoo\addons\web\controllers\main.py",line 1280,in search_read
return self.do_search_read(model,offset,limit,domain,sort)
File "C:\Program Files (x86)\Odoo 13.0\server\odoo\addons\web\controllers\main.py",line 1299,in do_search_read
return Model.web_search_read(domain,offset=offset,limit=limit,order=sort)
File "C:\Program Files (x86)\Odoo 13.0\server\odoo\addons\web\models\models.py",line 39,in web_search_read
records = self.search_read(domain,order=order)
File "C:\Program Files (x86)\Odoo 13.0\server\odoo\models.py",line 4841,in search_read
records = self.search(domain or [],line 1618,in search
res = self._search(args,order=order,count=count)
File "C:\Program Files (x86)\Odoo 13.0\server\odoo\addons\base\models\res_partner.py",line 710,in _search
count=count,access_rights_uid=access_rights_uid)
File "C:\Program Files (x86)\Odoo 13.0\server\odoo\models.py",line 4386,in _search
query = self._where_calc(args)
File "C:\Program Files (x86)\Odoo 13.0\server\odoo\models.py",line 4115,in _where_calc
e = expression.expression(domain,self)
File "C:\Program Files (x86)\Odoo 13.0\server\odoo\osv\expression.py",line 675,in __init__
self.parse()
File "C:\Program Files (x86)\Odoo 13.0\server\odoo\osv\expression.py",line 856,in parse
raise ValueError("Invalid field %r in leaf %r" % (left,str(leaf)))
ValueError: Invalid field 'state' in leaf "<osv.ExtendedLeaf: ('state',['assigned','partially_available']) on res_partner (ctx: )>"
我不确定,但是当我从搜索视图中调用它时,似乎进入了一个无休止的循环。
所以,我真的不知道这是怎么回事。
关于如何实现此目标的任何想法?
谢谢!
解决方法
我不确定你到底想要什么,但是尝试一下。在res.partner模型中添加状态字段。
class respartner(models.Model):
_inherit= "res.partner"
state = fields.Selection([('draft','Draft'),('waiting','Waiting'),],default='draft'
)
<odoo>
<data>
<record model='ir.ui.view' id='view_res_partner_filter'>
<field name='name'>res.partner.select.inherit.base.partner.filter</field>
<field name='model'>res.partner</field>
<field name='inherit_id' ref='base.view_partner_form'/>
<field name='arch' type='xml'>
<field name="category_id" position="after">
<field name="state"/>
</field>
</field>
</record>
<record id="view_res_partner_filter_inherit" model="ir.ui.view">
<field name="name">view.res.partner.filter.inherit</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_res_partner_filter"/>
<field name="arch" type="xml">
<filter name="salesperson" position="before">
<filter string="Draft" name="state" domain="[('state','=','draft')]"/>
<filter string="waiting" name="state" domain="[('state','waiting')]"/>
</filter>
</field>
</record>
</data>
</odoo>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。