Passa al contenuto
Menu
È necessario essere registrati per interagire con la community.
La domanda è stata contrassegnata
4 Risposte
20433 Visualizzazioni

I have this field in my model:

class Embed_Ingredients (models.Model): 
    _name = 'afribon_productapp.embed_ingredients'
     _description = 'a description'

    GLOBAL_IMPORT_OPTIONS = [('less', '<1 ton'), ('greater', '> 1 ton')] 

    procurement = fields.Selection ( [('imported', 'Imported'), ('local', 'Local')], default = 'imported', required = True )

    freight_greater_or_less = fields.Selection (
        GLOBAL_IMPORT_OPTIONS,
        string = "Weight",
        default = 'less'
    )



    @ api.onchange (' procurement ')
     def procurement_change (self):
     ' ''
        When user changes procument to `local`, add a new value to the global variable GLOBAL_IMPORT_OPTIONS
    '' '
     if self.procurement ==' local ':
  
        self.GLOBAL_IMPORT_OPTIONS.append ((' full_load_container ',' Full Load Container '))         
        print (self.GLOBAL_IMPORT_OPTIONS)
                
        
           
        


When the 'procurement' selection changes to local, I would like to add a new value into the  GLOBAL_IMPORT_OPTIONS variable

When I print the value of GLOBAL_IMPORT_OPTIONS in the terminal, I can see that the value has been appended into the list, but on the form view, I cannot see the new value in the selection dropdown. 

Thanks!


Avatar
Abbandona
Risposta migliore

Hello,

There are two ways to define dynamic values for selection field. You can pass the method through selection attribute inside fields. 

Like below mentioned code:

selection_field= fields.Selection(selection=lambda self: self.dynamic_selection())

Inside this code there is a method dynamic_selection

You can pass list of tuples like the method mentioned below

def dynamic_selection(self):

      select = [('yes', 'Yes'), ('no', 'No')]

      return select

Conclusion: if you ever want to at some dynamic values inside the selection field then you can simply inherit that method and add values as per your requirements.

Hope your query is resolved by now. Feel free to ask your questions. 

Thanks

Anisha Bahukhandi

Technical Content Writer

Avatar
Abbandona

Perfect solution to change the values of a selection field. Thanks!

Risposta migliore

there are 3 patterns in odoo code to get such thing it could as there

https://dev.to/kerbrose/dynamic-selection-list-in-odoo-for-selection-fields-16h8

Avatar
Abbandona

nice work

Risposta migliore

if anybody looking for how this works in odoo15, it's as Anisha said except you use:
selection=lambda self: self.env['your.model']._function_to_populate_selection()


Avatar
Abbandona
Risposta migliore

Hi, 

You can follow following link for this:

https://youtu.be/GPhgxxwprA4

Hope it helps,

Thanks

Avatar
Abbandona
Post correlati Risposte Visualizzazioni Attività
2
set 23
13112
2
set 23
9309
2
nov 23
5346
1
mag 17
3359
1
dic 20
4881