как использовать виртуальные записи поля one2many в поле many2one той же модели

В форме заказа на продажу я добавил поле one2many с именем booking_ids, которое отображается в редактируемом древовидном представлении.

В дереве строк заказа я добавил столбец many2one с именем booking_id, чтобы у каждой строки заказа был booking_id.

Находясь в режиме редактирования или создания sale.order, как можно показать виртуальные записи, добавленные в поле booking_ids в поле many2one, которое показывает только записи в базе данных без виртуальных записей, которые создается.

class SaleOrder(models.Model):
    _inherit = 'sale.order'
    booking_ids = fields.One2many('sale.booking', 'order_id', string='Bookings')

class SaleOrderLine(models.Model):
    _inherit = 'sale.order.line'        
    booking_id = fields.Many2one('sale.booking', string="Booking")

class Booking(models.Model):
    _name = 'sale.booking'
    event_id = fields.Many2one('sale.event', String='Event', required=True,
    states={'draft': [('readonly', False)], 'sent': [('readonly', False)]})
    name = fields.Char(compute='_get_name')
    event_date = fields.Date(string='Event Date')
    order_id = fields.Many2one('sale.order', string='Order Reference', ondelete='cascade', index=True, copy=False, readonly=True)
    order_line_ids = fields.One2many('sale.order.line', 'booking_id', string='Order Lines')

XML

         <xpath expr="//field[@name='payment_term_id']/.." position="after">
            <group>                    
                <field name="booking_ids">
                    <tree editable="bottom">
                        <field name="event_id"/>
                        <field name="event_date" string="Date"/>
                        <field name="order_line_ids" widget="many2many_tags" readonly="1"/>
                    </tree>
                </field>
            </group>
        </xpath>

        <xpath expr="//tree//field[@name='product_id']" position="after">      
            <field name="order_id" invisible="1"/>
            <field name="booking_id" domain="['|', ('order_id', '=', None), ('order_id', '=', order_id)]"/>                
        </xpath>    
        <xpath expr="//field[@name='order_line']//field[@name='product_id']/.." position="after">
        <field name="order_id" invisible="1"/>
            <field name="booking_id" domain="['|', ('order_id', '=', None), ('order_id', '=', order_id)]"/>                
        </xpath>

Спасибо


person SerenityTn    schedule 21.09.2019    source источник
comment
Не могли бы вы поделиться кодом, который вы написали до сих пор?   -  person Younis Mahsud    schedule 21.09.2019
comment
код сейчас там, я хочу достичь динамического списка many2one, который показывает записи, которые создаются в дереве one2many той же формы   -  person SerenityTn    schedule 21.09.2019


Ответы (1)


Используйте предварительную загрузку в коде Python. Это решит вашу проблему.

person Pablo Escobar    schedule 22.09.2019
comment
что такое предварительная загрузка, не могли бы вы объяснить подробнее на примере, может быть ... спасибо - person SerenityTn; 22.09.2019