重复记录丢失了多个字段问题

时间:2017-11-23 16:57:45

标签: python openerp odoo-10 odoo-11

我的产品包含来自自定义模块的额外字段。我正在尝试重写复制功能,否则当我尝试复制产品时,某些值不会重复。

因此,在此复制功能中,我设法添加这些字段,但如果我尝试仅添加原始产品字段中的ID,则会在产品复制后丢失值。我想这是有道理的。

代码:

class ProductTemplate(models.Model):
    _inherit= 'product.template'

    @api.multi
    def copy(self, default=None):
        default = dict(default or {})
        array_attribute_line_ids = []
        for value_id in self.attribute_line_ids.read([]):
            array_attribute_line_ids += [(4,value_id['id'])]
        print (array_attribute_line_ids)
        default.update({
            # General Information
            # 'standard_price': self.standard_price,

            # Variants > Attributes
            'attribute_line_ids': array_attribute_line_ids,
            # Purchase > Vendors

            # Inventory
            'weight': self.weight,
            'volume': self.volume,

            # Invoicing
            'property_account_income_id': self.property_account_income_id,
            'supplier_taxes_id': self.supplier_taxes_id, #NOT WORKING
            'property_account_expense_id': self.property_account_expense_id,
            'property_account_creditor_price_difference': self.property_account_creditor_price_difference,
        })
        return super(ProductTemplate, self).copy(default)

查看:手头的字段是图片底部显示的attribute_line_ids。

enter image description here

问题:我可以根据原始记录创建新记录,但问题是这些值中的一个取决于需要值'product_tmpl_id'的many2one,这是产品的ID。那么,如果我还没有新产品的ID,我怎么能创建这些值,因为它目前还没有重复。

以前在一个不同的功能我创建了记录,然后使用它的id我更新了这些值。现在它不可能。

有没有办法解决这个问题?是否有.copy()函数允许我复制所有这些记录而无需手动创建?

非常感谢你。

这是odoo 11企业。

1 个答案:

答案 0 :(得分:4)

IIUC您希望在复制产品时复制产品属性。我相信您可以通过将attribute_line_ids属性product.template上的字段copy更改为True来实现这一目标:

from odoo import fields, models


class ProductTemplate(models.Model):
    _inherit = 'product.template'

    attribute_line_ids = fields.One2many(copy=True)