openerp - Why Custom Field could not saved in create mode, it saved on write mode in odoo? -


i added part number field in product template model

partnumber = fields.char(         'part number', compute='_compute_partnumber',         inverse='_set_partnumber', store=true) 

i write function internal reference code

@api.depends('product_variant_ids', 'product_variant_ids.partnumber') def _compute_partnumber(self):     unique_variants = self.filtered(lambda template: len(template.product_variant_ids) == 1)     template in unique_variants:         template.partnumber = template.product_variant_ids.partnumber     template in (self - unique_variants):         template.partnumber = ''  @api.one def _set_partnumber(self):     if len(self.product_variant_ids) == 1:         self.product_variant_ids.partnumber = self.partnumber 

i added part number in product form.i used above methods name get(to part number in product description)

my problem part number not saved in create method. field saved in edit mode.

as "dccdany" said in comment, creation order bit tricky on templates. can see in code. first template created. partnumber won't set, because there no variant existing @ point. after template creation, variants created (one line later) without partnumber, there no partnumber after template creation.

what can do? overwrite product.template create(), like:

@api.model def create(self, vals):     template = super(producttemplate, self).create(vals)     if 'partnumber' in vals , len(template.product_varient_ids) == 1:         template.partnumber = vals.get('partnumber')     return template 

Comments

Popular posts from this blog

neo4j - finding mutual friends in a cypher statement starting with three or more persons -

php - How to remove letter in front of the word laravel -

minify - Minimizing css files -