Skip to Content
Menu
This question has been flagged
2 Replies
2927 Views

In the folloing code i extend the model partnet in my custommodule. I want to set sequence number for the new field "kundennummer" on a partner.  But in the vals of the model partner you can't find the new field "kundennummer", so the method create doesn't work! What should i do?


class Partner(models.Model):

#_name='extendedpartner'

_inherit= 'res.partner'

instructor=fields.Boolean("Instructor", default=False)

kundennummer=fields.Char(required=True, copy=False, readonly=True, index=True, default=lambda self: _('New'))

session_ids=fields.Many2many('openacademy.session',

string="Attended Sessions", readonly=True)

@api.model

def create(self, vals):

print(self.env['ir.sequence'].next_by_code('code'))

print(vals['function'])

vals['function']=self.env['ir.sequence'].next_by_code('code') or 'New'

if vals.get('kundennummer', 'New') == 'New':

vals['kundennummer'] = self.env['ir.sequence'].next_by_code('code') or 'New'

result = super(res_partner, self).create(vals)

return result

Avatar
Discard
Best Answer

Hello, you cannot use super(res_partner, self).create(vals) because res_partner is a model name string in Odoo, not a Python class.

In Python (and Odoo), super() must be called using the actual class name (e.g., Partner) or with no arguments if you're using Python 3+.

✅ Correct options are:

# Best modern way return super().create(vals) # Also valid return super(Partner, self).create(vals)

Avatar
Discard
Best Answer

Hii,

here is updated code 
from odoo import models, fields, api


class Partner(models.Model):

    _inherit = 'res.partner'


    instructor = fields.Boolean("Instructor", default=False)

    kundennummer = fields.Char(

        string="Kundennummer",

        required=True,

        copy=False,

        readonly=True,

        index=True,

        default='New'

    )

    session_ids = fields.Many2many(

        'openacademy.session',

        string="Attended Sessions",

        readonly=True

    )


    @api.model

    def create(self, vals):

        if vals.get('kundennummer', 'New') == 'New':

            vals['kundennummer'] = self.env['ir.sequence'].next_by_code('partner.kundennummer') or 'New'

        return super().create(vals)

it is updated python code 
i hope using this code your error is solved 

Avatar
Discard
Related Posts Replies Views Activity
2
Jun 25
700
0
Sep 19
3233
4
Feb 25
2302
3
Nov 24
29939
1
Aug 24
1959