我在一个自定义插件中有一个模型,该模型正在开发中,并且我想将其限制为特定域。我的模型如下所示:
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模块以便可以编辑mymodel
的多个实例的 ui 版本,则域过滤器为 not < / em>已应用,我可能会从其他项目中错误地选择软件版本。
在数据库中四处逛逛,似乎域名甚至都没有存储在那里。
MyOdooDatabase> SELECT name, domain FROM ir_model_fields \
WHERE model = 'mymodel' AND name = 'ui_code_version'
+-----------------------+----------+
| name | domain |
|-----------------------+----------|
| ui_code_version | <null> |
+-----------------------+----------+
类似地,该域不在此字段的“设置”->“技术”->“数据库结构”->“字段”条目中:
Q :如何使“批量编辑”模块服从我的领域域,以便只能选择ui项目版本?该域是否需要存储在数据库中?如果可以,怎么办?
编辑:根据Bhavesh Odedra的要求,以下是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'),
}
答案 0 :(得分:0)
域应为
domain="[('project', '=', 'ui')]"
您可以参考https://odedrabhavesh.blogspot.com/2015/09/domain-in-odoo.html进行将来的开发。
已更新
在project_name
对象中添加robots.software.versions
字段,使其与project
相关,如
'project_name': fields.related('project', 'name', type='char', store=True)
现在像
一样更新您的域 domain=[('project_name', '=', 'ui')]