Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
5 Trả lời
25522 Lượt xem

I have a selection field, and I want to fetch list of all keys and values using ORM method. How can I achieve it.


    _name = "calling_devices"

    device_type = fields.Selection([('desk','Desk'),('mobile','Mobile'),('home','Home'),('others','Others')])


Desired Output using ORM methods or alternate way:

Key_Value_pair = {'desk': 'Desk', ' mobile ' : ' Mobile ', ' home ': ' Home ', ' others ': ' Others '}

How can we achieve it?


Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

you can use this.

dict(self._fields['your_field'].selection).get(self.your_field)

Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

Hi Parag,

You can get your selection by:

self._fields['your_selection_field'].selection

In your case:

var = self._fields['device_type'].selection

output: [('desk','Desk'),('mobile','Mobile'),('home','Home'),('others','Others')]

Then convert this into Dictionary.

dict(var)

Final Output: {'desk': 'Desk', ' mobile ' : ' Mobile ', ' home ': ' Home ', ' others ': ' Others '}


Hope it helps!

Regards,

Mayank Gosai

Ảnh đại diện
Huỷ bỏ

I didn't know about this. Thank you for your information.

Thank you, Mayank sir +1

Câu trả lời hay nhất

 have followed Mayank Gosai's instructions, this is a good way.

var = self._fields ['device_type']. selection

dict_var = dict (var)

And now I can know the current value of the device_type field of the current record

record_device_type = dict_var [self.att_type_dwg]

such as if self.device_type = 'home' then record_device_type = 'Home'.
:)

Thanks Mayank Gosai

Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất
from odoo import api, models, _


def get_selection_label(self, object, field_name, field_value):
  return _(dict(self.env[object].fields_get(allfields=[field_name])[field_name]['selection'])[field_value])


class ResPartner(models.Model):
  _inherit = 'res.partner'

    def my_method(self):
        state_value_translated = get_selection_label(self, 'res.partner', 'state', self.state)
Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất
def _get_key_value_list(self):
    Key_Value_pair={}
    for elmt in self.device_type:
        Key_Value_pair.update({elmt[0]: elmt[1]})
    return Key_Value_pair
Ảnh đại diện
Huỷ bỏ
Bài viết liên quan Trả lời Lượt xem Hoạt động
0
thg 2 18
4960
2
thg 9 23
12423
3
thg 6 19
6562
1
thg 7 17
4923
2
thg 7 25
4606