Hello, I want to compute a field based on a number of records in a table.
That I want to do at the finish is :
code_tarif | numero_ordre | ... |
12 | 1 | ... |
12 | 2 | ... |
15 | 1 | ... |
15 | 2 | ... |
15 | 3 | ... |
But with this code, I have an error if I have more than 1 record in the table :
Code :
class miadi_lignesTarifs(models.Model): _name = 'miadi.lignestarifs'
code_tarif = fields.Many2one('miadi.tarifs', 'Price Code', default='', required=True, ondelete='cascade')
numero_ordre = fields.Integer('Order number', compute='_compute_numero_ordre')
produit_id = fields.Many2one('product.product', 'Product', required=True, ondelete='cascade')
conditionnement_id = fields.Many2one('miadi.packaging', 'Packaging', required=True, ondelete='cascade')
@api.depends('code_tarif')
def _compute_numero_ordre(self):
tarifs = self.env['miadi.lignestarifs']
self.numero_ordre = tarifs.search_count([('code_tarif', '=', self.code_tarif.id)])
Error :
ValueError: Expected singleton: miadi.lignestarifs(17, 18)
I tried to do it overriding the create method :
@api.multi
@api.model
def create(self, vals):
tarifs = self.env['miadi.lignestarifs']
self.numero_ordre = tarifs.search_count([('code_tarif', '=', self.code_tarif.id)])
return super(miadi_lignesTarifs, self).create(vals)
But it gives me this :
TypeError: create() takes exactly 2 arguments (1 given)
How can I do what I want ?
I'm on Odoo 10
Thanks for answers
Hi NIKHIL, I answer you in comment because I've not enought karma.
This solution doesn't work because it will put the same order number for all records.
I found the solution, I overrided the create method. In my first post, the create method were good but I had an error because of the copy/paste. I delete the function and I rewrit it and it works.
Thanks