【问题标题】:copy function not copy one2many relation field(odoo 10)复制功能不复制 one2many 关系字段(odoo 10)
【发布时间】:2018-01-16 14:57:24
【问题描述】:

当我将视图的条目翻倍时,我想复制存储在 one2many 关系中的所有信息。复制除 on2many 关系之外的所有值。我什至尝试覆盖复制功能以手动完成,但我一定做错了,或者我还没有理解。

这是类的代码

 class EmpleadosProductos(models.Model):
    _name = "employee.as.product"

    collection_lines = {}
    employee_line = fields.One2many(
        'employee.line', 
        'order_id', 
        string='Employee Lines'
        )

    state = fields.Selection([('creado', 'Creado'),
        ('confirmado', 'Confirmado'),
        ('cancelado', 'Cancelado'),
        ('validado', 'Validado'),
        ('pagado', 'Pagado')
        ], string='Status', index=True, readonly=True, track_visibility='onchange', copy=False, default='creado', required=True, help='Estado del parte de empleado')

    companyias = fields.Many2one('res.partner', 'Obra', domain=[('is_company', '=', True)])
    amount_total = fields.Monetary(string='Total', store=True, readonly=True, compute='_calcularTotal')
    journal_entry = fields.Many2one('account.move')


    currency_id = fields.Many2one('res.currency', 'Currency', required=True, default=lambda self: self.env.user.company_id.currency_id.id)
    fecha = fields.Date('Fecha')
    referencia = fields.Char(string='Ref', required=True) 
    # referencia = fields.Char(string='Ref', required=True) 
    journal_id = fields.Many2one('account.journal', 'Journal')

    _sql_constraints = [
        ('refererecia_constraint', 'unique(referencia)', 'La referencia debe de ser única!'),
    ]

    @api.multi
    def action_confirmar(self):
        self.write({'state': 'confirmado'})

    @api.multi
    def action_cancelar(self):
        self.write({'state': 'cancelado'})

    @api.multi
    def action_validar(self):
        self.write({'state': 'validado'})

    @api.multi
    def action_pagar(self):
        self.write({'state': 'pagado'})

    @api.multi
    def copy(self, default):
        _logger.info("DEBBUG:" + " default " +  str(default))
        _logger.info("DEBBUG:" + " self.employee_line " +  str(self.employee_line.name_get()))
        for line in self.employee_line:
            _logger.info("DEBBUG:" + " self.employee_line " +  str(line.name_get()))
        default = dict(default or {})
        default.update({
            'employee_line' : self.employee_line,
            'referencia': '',
        })
        # _logger.info("DEBBUG:" + str(vals))
        return super(EmpleadosProductos, self).copy(default)

【问题讨论】:

    标签: python-3.x odoo-10 odoo


    【解决方案1】:

    尝试将copy=True 添加到employee_line 定义中:

    class EmpleadosProductos(models.Model):
        _name = 'employee.as.product'
    
        employee_line = fields.One2many(
            'employee.line',
            'order_id',
            string='Employee Lines',
            copy=True,
        )
    

    完成此操作后,您不需要扩展/覆盖copy() 方法。

    【讨论】:

    • 操作我在评论副本时看不到最后一部分,它可以工作。谢谢 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 2023-01-19
    相关资源
    最近更新 更多