İçereği Atla
Menü
Bu soru işaretlendi
2 Cevaplar
2932 Görünümler

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
Vazgeç
En İyi Yanıt

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
Vazgeç
En İyi Yanıt

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
Vazgeç
İlgili Gönderiler Cevaplar Görünümler Aktivite
2
Haz 25
705
0
Eyl 19
3234
4
Şub 25
2304
3
Kas 24
29945
1
Ağu 24
1959