Odoo, как фильтровать значения поля many2one в поле one2many

У меня много2одно поле name_id. Обычно, когда я использую его в коде my_model.xml ниже, в этом поле я могу выбрать из всех значений, записанных в my.model.line. В этом случае я хочу отфильтровать значения и увидеть список только тех значений, которые записаны в текущей модели my.model.

моя_модель.xml

    <record model="ir.ui.view" id="view_my_model_form">
        <field name="name">my.model.form</field>
        <field name="model">my.model</field>
        <field name="arch" type="xml">
            <form string="My Model">
            <header>

                        <field name="my_model_line">
                            <tree>
                                <field name="name"/>
                            </tree>
                         </field>
               <notebook>
                    <page>
                        <field name="supply_conditions_status">
            <tree string="My model Lines">
                                <field name="name_id"/>
                            </tree>

Классы:

class SupplyConditions(models.Model):
    _name = 'supply.conditions'

    name_id = fields.Many2one('my.model.line', string='Product')
    model_id = fields.Many2one('my.model')


class MyModelLine(models.Model):
    _name = 'my.model.line'

    name = fields.Char('Name')
    my_model_id = fields.Many2one('my.model')

class MyModel(models.Model):
    _name = 'my.model'

    title = fields.Char('Title')
    my_model_line = fields.One2many('my.model.line', 'my_model_id')
    supply_conditions_status = fields.One2many('supply.conditions', 'model_id')

Для более ясного понимания - пример:

У меня есть вид формы my.model (имя поля = «первый») и my.model (имя поля = «второй»).

В my.model (name = 'first') В поле имени my_model_line добавлены данные: 'item1', 'item2'

В my.model (name = 'second') В поле имени my_model_line добавлены данные: '1item', '2item'

Сейчас:

В поле my.model (name = 'first') Supply_conditions_status name_id я вижу выбор: «1item», «2item, item1», «item2»

Потребность:

В my.model (name = 'first') Supply_conditions_status name_id возможность выбирать только из 'item1', 'item2'

Как я могу этого добиться?


person fueggit    schedule 19.09.2017    source источник
comment
Я думаю о методе name_get в модели my.model.line. Проблема в том, что я не могу получить текущий идентификатор класса my.model.   -  person fueggit    schedule 20.09.2017


Ответы (1)


Вы можете добиться этого, просто предоставив домен своему полю many2one. попробуй это:

name_id = fields.Many2one('my.model.line', string='Product', domain=lambda self: [('my_model_id', '=', self.model_id)])

person Amal    schedule 29.10.2017