как получить значение объекта поля выбора в odoo @ api.onchange - PullRequest
1 голос
/ 26 марта 2020

У меня есть поле выбора с отношением One2many. Я хотел бы изменить другое поле в зависимости от результата поля выбора, но оно возвращает объект !!! кто-нибудь знает, как это работает

 from odoo import models, fields, api

 class module1(models.Model):
   _name = 'module1_module1'
   _rec_name="sem"

   sem=fields.Selection([
    ('1', '1st Sem'),
    ('2', '2nd Sem'),
    ('3', '3rd Sem')
],"Semester")
  sem_id = fields.Char("Semester ID")
  sub = fields.One2many('module1_module1_1','sem',"Subjects")




  class module1_1(models.Model):
     _name = 'module1_module1_1'


     sem = fields.Many2one('module1_module1',"semester")
     sem_id = fields.Many2one('module1_module1',"ID")

     @api.onchange('sem')
     def _ValueCount(self):
        print(self.sem.sem)

Печать поля выбора возвращает module1_module1 (,) мне нужно указать c имя поля, например, вариант 1 или 2, чтобы выполнить соответствующее условие

1 Ответ

0 голосов
/ 26 марта 2020

Здесь вам нужно позаботиться о том, чтобы не вводить цифры c в поле выбора поля.

   sem = fields.Selection([
       ('first', '1st Sem'),
       ('second', '2nd Sem'),
       ('third', '3rd Sem')
   ], "Semester")

Вот метод обмена:

 @api.onchange('sem')
 def _ValueCount(self):
    # execute your logic base on semester
    if self.sem:
        sem = self.sem.sem
        if sem == 'first':
            #execute first semester logic
            ...
        elif sem == 'second':
            #execute second semester logic
            ...
        else:
            #execute third semester logic
            ...
...