Вызов @api в заголовке функции

1

Итак, я работаю над этим объектом, где он наследует от другого объекта ODOO v8

class a(models.Model):
_inherit = 'my.inherit.object'

@api.multi
def _default_group(self):
    domain = {'group_id': [('id', 'in', False)]}
    user_c = self.env['timetable'].search([
        # ('company_id', '=', self.env.user.company_id.id),
        ('year_id', '=', self.year_id),
        ('user_id', '=', self.user_id.id), ])
    if not teacher:
        raise exceptions.ValidationError(_("you haven't access, sorry so contact your administrator"))

    groups = []
    for line_groups in user_c:
        if line_groups.cd_id == self.cd_id:
            groups.append(line_groups.group_id.id)
        domain['group_id'] = [('id', 'in', groups)]


    return {'domain': domain}

поэтому, когда я пытаюсь запустить этот тестовый код, он показывает мне эту ошибку

Expected singleton: my.inherit.object ('lang', 'tz', 'params', 'uid', 'active_model')

Что я могу сделать, чтобы исправить это, все поля работают, а также обработка работает нормально, но она останавливается и показывает мне ошибку.

  • 0
    Как вы называете этот метод _default_group . Для чего он предназначен?
Теги:
odoo
odoo-8
odoo-10

3 ответа

1

self.ensure_one делается для обеспечения self.ensure_one только одной записи. Он проверяет, что текущая запись является одноэлементной (так что только одна запись, а не несколько записей).

Если self будет содержать несколько записей, система выведет ошибку.

Вы можете попробовать следующий код:

@api.multi
def _default_group(self):
    self.ensure_one()
    # your logic start from here
  • 0
    это то же самое, что он все еще показывает мне ошибку синглтон
  • 0
    Я написал блог для той же ошибки. Так что это может быть полезно для будущей отладки odedrabhavesh.blogspot.com/2017/02/…
0

Попробуй это:

for line_groups in user_c:
    for rec in self:
        if line_groups.cd_id == rec.cd_id:
            groups.append(line_groups.group_id.id)
    domain['group_id'] = [('id', 'in', groups)]
0

Если ваш метод _default_group используется как метод по умолчанию - получение значения по умолчанию для поля - self это пустой набор записей. Но вы используете self как singleton, например, в ('year_id', '=', self.year_id). Это не сработает. Чтобы получить значения, например, год или что-то еще в методах значений по умолчанию, вам нужно будет найти способ self.

Ещё вопросы

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