Skip to Content
เมนู
คุณต้องลงทะเบียนเพื่อโต้ตอบกับคอมมูนิตี้
คำถามนี้ถูกตั้งค่าสถานะ
5 ตอบกลับ
25541 มุมมอง

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?


อวตาร
ละทิ้ง
คำตอบที่ดีที่สุด

you can use this.

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

อวตาร
ละทิ้ง
คำตอบที่ดีที่สุด

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

อวตาร
ละทิ้ง

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

Thank you, Mayank sir +1

คำตอบที่ดีที่สุด

 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

อวตาร
ละทิ้ง
คำตอบที่ดีที่สุด
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)
อวตาร
ละทิ้ง
คำตอบที่ดีที่สุด
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
อวตาร
ละทิ้ง
Related Posts ตอบกลับ มุมมอง กิจกรรม
0
ก.พ. 18
4972
2
ก.ย. 23
12445
3
มิ.ย. 19
6576
How to write status in a char field?? แก้ไขแล้ว
1
ก.ค. 17
4938
2
ก.ค. 25
4638