Zum Inhalt springen
Menü
Sie müssen registriert sein, um mit der Community zu interagieren.
Diese Frage wurde gekennzeichnet
2 Antworten
3041 Ansichten

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
Verwerfen
Beste Antwort

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
Verwerfen
Beste Antwort

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
Verwerfen
Verknüpfte Beiträge Antworten Ansichten Aktivität
2
Juni 25
784
0
Sept. 19
3279
4
Feb. 25
2454
3
Nov. 24
30038
1
Aug. 24
2050