Odoo 8-大量编辑和字段域

时间:2018-10-12 02:03:30

标签: odoo odoo-8

我在一个自定义插件中有一个模型,该模型正在开发中,并且我想将其限制为特定域。我的模型如下所示:

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> |
+-----------------------+----------+

类似地,该域不在此字段的“设置”->“技术”->“数据库结构”->“字段”条目中:

Screenshot of Field Settings

Q :如何使“批量编辑”模块服从我的领域域,以便只能选择ui项目版本?该域是否需要存储在数据库中?如果可以,怎么办?


编辑:根据Bhavesh Odedra的要求,以下是robots.software.versionsrobots.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'),
    }

1 个答案:

答案 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')]