Odoo 10 - Получить значение поля другой модели

1

Вот код:

Целевая модель:

class SchoolYears(models.Model):

    _name = "ecole.partner.school.years"
    _rec_name = "school_years"  # POUR ASSIGNER PAR DEFAUT UN AUTRE CHAMP AUTRE QUE NAME
    _order = 'id desc'

    school_years = fields.Char(string='School year', required=True, copy=False)
    year_begin_date = fields.Date(string='Start date', required=True, copy=False)
    year_end_date = fields.Date(string='End date', required=True, copy=False)
    default_school_year = fields.Boolean(string='Current school year', copy=False)
    period_school_year = fields.Boolean(string='Registration period', copy=False)
    active = fields.Boolean(default=True)

Целевые поля: → year_begin_date = fields.Date (строка = 'Дата начала', обязательно = True, copy = False)

Модель, где я хочу получить доступ к полям:

class ResPartnerSchool(models.Model):

    _name = 'ecole.partner.school'
    _order = 'id desc'

    @api.multi
    def _get_begin_date(self):
        domain = [('period_school_year', '=', False), ('default_school_year', '=', True)]
        begin_date_id = self.env['ecole.partner.school.years'].search(domain, limit=1).year_begin_date
        begin_date = fields.Date.from_string(begin_date_id)
        date_j = datetime.date.today()
        if begin_date_id:
            if begin_date > date_j:
                return begin_date_id
            else:
                return date_j
...
    school_year_id = fields.Many2one(string='Period',
                                     ondelete='SET NULL',
                                     comodel_name="ecole.partner.school.years",
                                     default=_get_period_year)
    school_registration = fields.Date(string='Beginning',
                                      copy=False,
                                      default=_get_begin_date)
...

Вот точка зрения: Изображение 174551 Я хочу получить правильную дату начала учебного года, связанную с school_years, которая имеет тип char и которая является Many2one в модели ecole.partner.school. Я знаю, что есть много способов сделать это, особенно с "связанной областью". За исключением того, что у меня есть функция, которая позволяет мне восстановить дату дня с начала учебного года, когда человек полностью находится в школьном периоде. В настоящее время моя функция написана в "hard" → это то, что мы видим в переменной "domain". И я не хочу использовать "связанную область" в своем поле school_registration.

У вас есть идея получить правильную дату начала при выборе учебного года?

Спасибо

Теги:
odoo

1 ответ

0

Вы можете попробовать с вычисленными полями:

school_year_id = fields.Many2one(string='Period',
                                 ondelete='SET NULL',
                                 comodel_name="ecole.partner.school.years",
                                 default=_get_period_year)
school_registration = fields.Date(string='Beginning',
                                  copy=False,
                                  compute=_get_begin_date)

@api.multi
@api.depends('school_year_id')
def _get_begin_date(self):
    for record in self:
        record.school_registration = record.school_year_id.year_begin_date

Ещё вопросы

Сообщество Overcoder
Наверх
Меню