У меня есть модель в пользовательском плагине, который я разрабатываю с полем, которое я хочу ограничить конкретным доменом.Моя модель выглядит примерно так:
from openerp.osv import fields, osv
class MyModel(osv.Model):
_name = 'mymodel'
_columns = {
'ui_code_version': fields.many2one(
comodel_name='robots.software.versions',
string='UI Code Version',
domain="[('project', '=', 'ui')]"
)
}
При непосредственном редактировании экземпляра моей модели кажется, что domain
- это , правильно ограничивающий мой выбор до ui версии проекта, что здорово.
Однако, если я настрою модуль Mass Editing , чтобы я мог редактировать ui версий нескольких экземпляров mymodel
, фильтр домена будет не применено, и я могу ошибочно выбирать версии программного обеспечения из других проектов.
Выискивая в базе данных, похоже, что домен там даже не сохраняется.
MyOdooDatabase> SELECT name, domain FROM ir_model_fields \
WHERE model = 'mymodel' AND name = 'ui_code_version'
+-----------------------+----------+
| name | domain |
|-----------------------+----------|
| ui_code_version | <null> |
+-----------------------+----------+
Аналогично, домен не находится в поле «Настройки» - «Технические параметры» - «Структура базы данных» -> «Поля» для этого поля:
Q : Как я могу заставить модуль массового редактирования подчиняться домену моих полей, чтобы я мог выбирать только версии проектов пользовательского интерфейса?Нужно ли хранить этот домен в базе данных?Если да, то как?
Редактировать: В соответствии с просьбой Бхавеш Одедра , ниже приведены определения для robots.software.versions
и robots.software.projects
:
class RobotsSoftwareVersions(osv.Model):
_name = 'robots.software.versions'
_description = 'Software Version'
_columns = {
'name': fields.char('Name'),
'project': fields.many2one('robots.software.projects', 'Project'),
'version': fields.char('Version', help='The git tag or hash (e.g. 3.2.1)')
}
class RobotsSoftwareProjects(osv.Model):
_name = 'robots.software.projects'
_columns = {
'name': fields.char('Name'),
'upstream': fields.char('Upstream'),
}