How can I create, update or delete values for a selection field?
For example, a selection field has allowable values: value1, value2
How can I add value3?
Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:
How can I create, update or delete values for a selection field?
For example, a selection field has allowable values: value1, value2
How can I add value3?
There are 3 ways to provide selection list values that is accepted by OpenERP:
def _method_name(self, cr, uid, context=None):
return [('value1', 'String 1'), ('value2', 'String 2')]
Now, you need to check first which one is your current selection field is. If it is using method No. 1, then you need to redefine it to use either method No 2 or method No 3. If it is using method No. 2 or 3, you just need to change either the variable (you can use LIST_VARIABLE.append(('value3', 'String 3'))) to return the new value.
Selection field allows static value in list of tuples
registration_state = fields.Selection([('select_1', 'One'), ('select_2', 'Two'), ('select_3', 'Three')], 'Select')
in that you can not add values.
so the solutions is to add a many2one field, which allows you to add value in it. for that you need to define a new model of your selection.
class selection_selection(models.Model):
_name = 'selection.selection'
name = fields.Char('Name', required=True)
value = fields.Char('Value', required=True)
now in your class you need to add many2one field which is referencing to your selection model like,
class your_model(models.Model):
_name = 'your.model'
my_selection = fields.Many2one(selection.selection, Selections)
now in xml file while defining the fields you need to add a widget to your selection field like,
<field name="my_selection" widget="selection" />
to configure the selections you can make menu under configuration as per your need.
hope this helps.
@Atul you can make selection field to have a somewhat dynamic (can be changed by other modules) list of values as I've stated in my answer. Also (and thus), the choice of using either many2one and selection fields does not only lies on the capability to add values. Further details on the differences between many2one and selection fields are elaborated in my answer here: https://www.odoo.com/forum/help-1/question/best-practices-as-to-when-to-use-fields-selection-vs-fields-many2one-69262
Obviously we can make it dynamic selection field. Thanks for the comment @Ivan.
Hi Luigi,
There are two kinds of "selection" fields, so there are two ways that the values are managed.
The one that is defined as "fields.selection(...)" [defined in the .py file, the model] has values defined there in a comma seperated list. In this case you add the new value to the list in the .py file.
Or a field can be defined as a one to many2one(...), in which case the line that defines it in the .py file will indicate what table has the values. Usually use can add new values from the interface on this type of field.
you can use list to add item dynamically in fields.Selection
cnt=0
list1=[]
for i in range(1900,2017):
list1.append((str(cnt),str(i)))
cnt=cnt+1class Employee(models.Model):
_name = 'employee.details'
year=fields.Selection(list1, string='Years', required=True, copy=True)
Create an account today to enjoy exclusive features and engage with our awesome community!
RegistracijaRelated Posts | Replies | Rodiniai | Veikla | |
---|---|---|---|---|
|
4
gruod. 23
|
21519 | ||
|
5
liep. 24
|
14795 | ||
|
1
birž. 22
|
26297 | ||
|
0
liep. 20
|
2438 | ||
|
0
kov. 20
|
3223 |
How can I do this in the SaaS instance?
Luigi, unfortunately, AFAIK, you cannot do any of those answers in SaaS instance. You need to do some development.
You can, alternatively, create a new selection field to capture the 3rd (and 4th, etc.) selection. But it will be informational only.