как использовать виртуальные записи поля one2many в поле many2one той же модели - PullRequest
0 голосов
/ 21 сентября 2019

В форме заказа на продажу я добавил одно2 множество поля с именем 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>

спасибо

1 Ответ

0 голосов
/ 22 сентября 2019

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

...