Динамический домен поля Many2One в Odoo 17 на основе функции обратного вызоваPython

Программы на Python
Ответить
Anonymous
 Динамический домен поля Many2One в Odoo 17 на основе функции обратного вызова

Сообщение Anonymous »

Мне нужно создать новое поле Many2one в Odoo 17, расширив стандартную модель res.partner, чтобы домен вновь созданного поля res_partner.settore_principale и его возможные значения выбирались динамически в соответствии со значением атрибут res_partner.x_studio_macrocategoria той же записи, как в случае, если последняя была изменена, так и в случае, если она не была изменена было.
Я пытаюсь создать новое поле с обратным вызовом, определяющим его домен, как показано ниже:

Код: Выделить всё

    settore_principale = fields.Many2one(
'res.partner.industry',
string="Settore",
domain=lambda self: self._compute_settore_domain()  # I tried both with and without str()
)

def _compute_settore_domain(self):
domain = [('x_studio_settore_padre', '=', False)]
if self.x_studio_macrocategoria:
domain.append(('x_studio_macrocategoria', '=', self.x_studio_macrocategoria))
return domain  # Return domain as a list of tuples, not string

@api.onchange('x_studio_macrocategoria')
def _onchange_macrocategoria(self):
return {'domain': {'settore_principale': self._compute_settore_domain()}}
Дело в том, что при загрузке аддона даже с первой попытки я получаю следующую ошибку:

Код: Выделить всё

odoo.addons.base.models.ir_qweb.QWebException: Error while render the template
UndefinedColumn: column res_partner.settore_principale does not exist
LINE 1: ...uid", "res_partner"."write_date" AS "write_date", "res_partn...
^
похоже, что хотя код анализируется и выполняется хотя бы частично корректно, он не позволяет Odoo продолжить фактическое создание поля в базе данных.
Может ли кто-нибудь помочь мне понять, что я делаю неправильно?
Заранее спасибо

Подробнее здесь: https://stackoverflow.com/questions/792 ... k-function
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»