我在自定义插件中有一个模型,正在使用我想要限制到特定域的字段来开发该模型。我的模型看起来像:
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
is 正确地将我的选择限制为 ui 项目版本,这很棒。
但是,如果我设置 Mass Editing 模块以便可以编辑 mymodel
的多个实例的
ui版本,则不会应用域过滤器,并且我可能会错误地从其他项目中选择软件版本。 在数据库中查看,看起来域甚至没有存储在那里。
MyOdooDatabase> SELECT name, domain FROM ir_model_fields \
WHERE model = 'mymodel' AND name = 'ui_code_version'
+-----------------------+----------+
| name | domain |
|-----------------------+----------|
| ui_code_version | <null> |
+-----------------------+----------+
同样,该域不在该字段的“设置”->“技术”->“数据库结构”->“字段”条目中:Q
:如何让批量编辑模块服从我的字段域,以便我只能选择ui项目版本?该域名是否需要存储在数据库中?如果是的话,怎么办?
编辑:根据的要求,以下是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'),
}
domain="[('project', '=', 'ui')]"
project_name
对象中添加
robots.software.versions
字段并使其与project
相关,如'project_name': fields.related('project', 'name', type='char', store=True)
domain=[('project_name', '=', 'ui')]