Наследование фильтра вида поиска от моделей комплектации до контактов — Сообщество Odoo v13

#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. большое спасибо, но «состояние», которое я хочу, состояние из состояния доставки в комплектации модели.. запас — доставка — фильтр