Přejít na obsah
Menu
You need to be registered to interact with the community.
This question has been flagged
2 Odpovědi
2944 Zobrazení

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
Zrušit
Nejlepší odpověď

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
Zrušit
Nejlepší odpověď

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
Zrušit
Related Posts Odpovědi Zobrazení Aktivita
2
čvn 25
719
0
zář 19
3234
4
úno 25
2311
3
lis 24
29949
1
srp 24
1962