#inheritance #filter #searchview #stock #odoo-13
#наследование #Фильтр #searchview #запас #odoo-13
Вопрос:
Я пытаюсь добавить фильтр из подбора на складе (готово, готово …) в фильтр контактов.
В частности, пытаюсь наследовать от stock.выбирая фильтр, который мне нужен, чтобы добавить его в 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",
domain="[('state', '=', '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', 'in', ('assigned', '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.0serverodoohttp.py", line 624, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "C:Program Files (x86)Odoo 13.0serverodoohttp.py", line 310, in _handle_exception
raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
File "C:Program Files (x86)Odoo 13.0serverodootoolspycompat.py", line 14, in reraise
raise value
File "C:Program Files (x86)Odoo 13.0serverodoohttp.py", line 669, in dispatch
result = self._call_function(**self.params)
File "C:Program Files (x86)Odoo 13.0serverodoohttp.py", line 350, in _call_function
return checked_call(self.db, *args, **kwargs)
File "C:Program Files (x86)Odoo 13.0serverodooservicemodel.py", line 94, in wrapper
return f(dbname, *args, **kwargs)
File "C:Program Files (x86)Odoo 13.0serverodoohttp.py", line 339, in checked_call
result = self.endpoint(*a, **kw)
File "C:Program Files (x86)Odoo 13.0serverodoohttp.py", line 915, in __call__
return self.method(*args, **kw)
File "C:Program Files (x86)Odoo 13.0serverodoohttp.py", line 515, in response_wrap
response = f(*args, **kw)
File "C:Program Files (x86)Odoo 13.0serverodooaddonswebcontrollersmain.py", line 1280, in search_read
return self.do_search_read(model, fields, offset, limit, domain, sort)
File "C:Program Files (x86)Odoo 13.0serverodooaddonswebcontrollersmain.py", line 1299, in do_search_read
return Model.web_search_read(domain, fields, offset=offset, limit=limit, order=sort)
File "C:Program Files (x86)Odoo 13.0serverodooaddonswebmodelsmodels.py", line 39, in web_search_read
records = self.search_read(domain, fields, offset=offset, limit=limit, order=order)
File "C:Program Files (x86)Odoo 13.0serverodoomodels.py", line 4841, in search_read
records = self.search(domain or [], offset=offset, limit=limit, order=order)
File "C:Program Files (x86)Odoo 13.0serverodoomodels.py", line 1618, in search
res = self._search(args, offset=offset, limit=limit, order=order, count=count)
File "C:Program Files (x86)Odoo 13.0serverodooaddonsbasemodelsres_partner.py", line 710, in _search
count=count, access_rights_uid=access_rights_uid)
File "C:Program Files (x86)Odoo 13.0serverodoomodels.py", line 4386, in _search
query = self._where_calc(args)
File "C:Program Files (x86)Odoo 13.0serverodoomodels.py", line 4115, in _where_calc
e = expression.expression(domain, self)
File "C:Program Files (x86)Odoo 13.0serverodooosvexpression.py", line 675, in __init__
self.parse()
File "C:Program Files (x86)Odoo 13.0serverodooosvexpression.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', 'in', ['assigned', 'partially_available']) on res_partner (ctx: )>"
Я не совсем уверен, но кажется, что он входит в бесконечный цикл, когда я вызываю его из представления поиска.
Итак, я действительно не знаю, что с этим не так.
Есть идеи о том, как это сделать?
Заранее спасибо!
Комментарии:
1. Вы получили ошибку, потому что в модели res.partner нет поля состояния.
2. что мне делать?
3. Вам нужно точно указать, что вы хотите сделать? Ваш код не завершен. Где ваша модель res.partner?
4. я хочу наследовать фильтр от подбора запасов до фильтра контактов..
Ответ №1:
Я не знаю точно, чего вы хотите, но попробуйте это.Добавьте поле состояния в модель 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>
Комментарии:
1. К сожалению, та же проблема
2. @ZakariaHamid. Вы хотите добавить фильтр в представление контактов, верно? Итак, вы уже проверили выход из поля состояния или нет? И что вы имеете в виду, что хотите наследовать фильтр от комплектации до фильтра контактов? Я думаю, что ваша проблема проста, но вам нужно четко сказать. Вот почему никто не отвечает на ваш вопрос. Спасибо.
3. в фильтре выбора товара есть 6 состояний доставки клиентов (черновик, ожидание, подтверждено, назначено, выполнено, отмена), мне нужно наследовать этот фильтр для просмотра поиска в фильтре контактов.
4. @ZakariaHamid. Я отредактировал свой код. Не забудьте добавить некоторое состояние в поле состояния . Я протестировал некоторую демонстрацию. Попробуйте это.
5. большое спасибо, но «состояние», которое я хочу, состояние из состояния доставки в комплектации модели.. запас — доставка — фильтр