Фильтр унаследованного поля модели odoo

Я создаю настраиваемый модуль, в котором у меня есть поле many2one, в котором есть записи из res.partner с поставщиком = True. Мое поле,

seller = fields.Many2one('res.partner', string="Select Seller")

Прочтите, что я могу сделать это в своем XML-файле, и попробовал,

 <data>

          <record id="test_menu_action" model="ir.actions.act_window">
            <field name="name">Tests</field>
            <field name="res_model">tests.alltests</field>
            <field name="view_type">form</field>
            <field name="view_mode">tree,form</field>
            <field name="domain">[('supplier','=',True)]</field>
            <field name="help" type="html">
                <p class="oe_view_nocontent_create">Create The First Test
                </p>
            </field>
        </record>





        <menuitem id="quality_main_menu"
                name="Quality"/>
        <menuitem id="test_create" parent="quality_main_menu" name="Test" action="test_menu_action"/>

    </data>

что дало мне следующую ошибку:

Odoo Server Error ........
ValueError: Invalid field 'supplier' in leaf "<osv.ExtendedLeaf: ('supplier', '=', True) on tests_alltests (ctx: )

Как мне это сделать правильно?

Я использую версию сообщества odoo V12.


person p.ry    schedule 07.06.2019    source источник
comment
Вместо ('supplier', '=', True) можно попробовать ('supplier', '!=', False)   -  person travisw    schedule 07.06.2019
comment
@travisw теперь я получаю ту же ошибку с '! =' вместо '='.   -  person p.ry    schedule 07.06.2019
comment
Ваше поле определено как seller, но в вашем домене используется supplier. Это верно? К какому классу принадлежит seller?   -  person travisw    schedule 07.06.2019
comment
@travisw Да, я пытался получить записи с поставщиком = true от res.partner. продавец является частью класса alltests.   -  person p.ry    schedule 07.06.2019


Ответы (1)


Прежде всего, вам не нужно делать это в действии, вместо этого вы должны сделать это в собственном поле:

  1. Если домен должен применяться всегда, лучше всего поместить его в объявление поля, поэтому, когда вы когда-либо используете его в любом представлении, домен автоматически применяется.
     seller = fields.Many2one('res.partner', 
                        string="Select Seller",
                        domain="[('supplier','=',True)]")
  1. Если домен не всегда применяется, добавьте его в представление XML, когда он вам понадобится.
    <field name="seller" domain="[('supplier','=',True)]"/>

А домен, который вы использовали в действии, предназначен для другой ситуации, например, если вы хотите создать меню для res.partner и хотите, чтобы пользователи видели только поставщика, вы можете добавить домен к действию таким образом, независимо от того, что делает пользователь. при просмотре поиска этот домен всегда добавляется к выбранному фильтру.

person Charif DZ    schedule 07.06.2019
comment
Думаю, мне следует использовать первый метод. Я новичок в odoo. Спасибо за исправление. - person p.ry; 08.06.2019