Как вставить значение списка в словарь для метода default_get odoo11

Я использую метод default_get для полей one2many, и я могу видеть поля в списке, но когда я хочу передать эти поля в словарь с помощью метода super в show blank dictionary. Итак, как это получить?

Мой код на Python находится здесь:

@api.model
def default_get(self, fields):
    print("FIELDS", fields)
    rec = super(CrmContactLine, self).default_get(fields)
    print("REC", rec)
    context = dict(self._context or {})
    partner = self.env['res.partner'].browse(context['partner_id'])
    fields['partner_m2m'] = partner.child_ids
    return rec

ПОЛУЧЕН РЕЗУЛЬТАТ НА ТЕРМИНАЛЕ 'FIELDS' ПОКАЗЫВАЮТ ЗНАЧЕНИЯ СПИСКА, НО СЛОВАРЬ 'REC' NULL

FIELDS ['имя', 'электронная почта', 'обозначение', 'связанный_профайл', 'идентификатор', 'статус_подхода', 'дата_подхода', 'статус_почты_почты', 'follow_up_date', 'partner_m2m']

ЗАПИСЬ {}

Заранее спасибо.

0
0
547
2

Ответы 2

Если супер-вызов метода default_get вернет пустой dict, это потому, что для этой модели не будут определены значения по умолчанию, и это допустимый результат. Вам нужно ввести свои собственные значения, прежде чем возвращать результат dict rec в вашем случае, а не в списке полей. Это должно сработать для вас

@api.model
def default_get(self, fields):
    rec = super(CrmContactLine, self).default_get(fields)
    context = dict(self._context or {})
    partner = self.env['res.partner'].browse(context['partner_id'])
    rec['partner_m2m'] = partner.child_ids
    return rec

У меня есть решение этой проблемы.

@api.model
def default_get(self, fields):
    rec = super(CrmContactLine, self).default_get(fields)
    context = dict(self._context or {})
    partner = self.env['res.partner'].browse(context['partner_id'])
    rec['partner_m2m'] = [(6, 0, partner.child_ids.ids)]  # if your field type is many2many
    return rec

Другие вопросы по теме