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

After saving the child record with the parent ID as a reference, the parent ID should not appear in the Many2One field.

I have written the following code but it is not working. it is working in odoo 15 but not odoo 17


class CustomPreset(models.Model):

    _name = 'custom.preset'

    _inherit = ['mail.thread', 'mail.activity.mixin']


    name = fields.Many2one('custompreset.master', string='Name')

    rel_id = fields.One2many('custompreset.child', 'parent_field_id', string='Detail')

    search_dp = fields.Char(string='Search')



@api.onchange('search_dp')

    def onchange_test_domain_fiedl(self):

        mini_rec = self.env['custom.preset'].search([]).name

        available_ids = []

        for i in mini_rec:

            available_ids.append(i.id)

          return {'domain': {'name': [('id', '!=', available_ids)]}}



Avatar
Zrušit
Nejlepší odpověď

Hello Yoganandam Gopal,

One possible issue could be with the "onchange" method. Make sure you don’t have two methods with the same name.


Also, it’s important to ensure that you have added the necessary dependencies to your "__manifest__.py".

Here’s a revised version of your code:

class CustomPreset(models.Model):

    _name = 'custom.preset'

    _inherit = ['mail.thread', 'mail.activity.mixin']


    name = fields.Many2one('custompreset.master', string='Name')

    rel_id = fields.One2many('custompreset.child', 'parent_field_id', string='Detail')

    search_dp = fields.Char(string='Search')


    @api.onchange('search_dp')

    def onchange_test_domain_field(self):

        mini_rec = self.env['custom.preset'].search([('id', '!=', self.id)]).name

        available_ids = []

        for i in mini_rec:

            available_ids.append(i.id)

        return {'domain': {'name': [('id', 'not in', available_ids)]}}


In this revised code, I’ve changed the search domain in the "onchange" method to exclude the current record’s ID. This should prevent the current record from appearing in the "Many2one" field dropdown.


Hope this helps

Regards,
Maciej Burzymowski

Avatar
Zrušit
Related Posts Odpovědi Zobrazení Aktivita
0
bře 15
5085
1
čvc 24
2979
0
úno 24
14
3
pro 23
1798
4
kvě 25
2490