我试图过滤一系列'类型'根据他们的班级'对于特定的场景'但它会导致空字段或DataError,具体取决于我使用的过滤器。
domain=[('aclass.name', '=', 'aclass_id.name')]
=一个空的选择字段,
domain=[('aclass.id', '=', 'aclass_id.id')]
=
...
res = self._obj.execute(query, params)
DataError: invalid input syntax for integer: "aclass_id.id"
LINE 1: ...ass".id FROM "test_aclass" WHERE "test_aclass".id = 'aclass_id...
^
这是我的model.py
# -*- coding: utf-8 -*-
from openerp import models, fields, api
class Aclass (models.Model):
_name = 'test.aclass'
name = fields.Char()
description = fields.Text()
class Atype (models.Model):
_name = 'test.atype'
name = fields.Char()
description = fields.Text()
aclass = fields.Many2one('test.aclass')
class Ascenario(models.Model):
_name = 'test.ascenario'
name = fields.Char()
description = fields.Text()
aclass_id = fields.Many2one('test.aclass')
atype_id = fields.Many2one('test.atype', domain=[('aclass.id','=','aclass_id.id')])
表单视图:
<openerp>
<data>
<record model="ir.ui.view" id="ascenario_form_view">
<field name="name">ascenario.form</field>
<field name="model">test.ascenario</field>
<field name="arch" type="xml">
<form string="Scenario">
<sheet>
<group string="Scenario">
<field name="name"/>
<field name="description"/>
<field name="aclass_id"/>
<field name="atype_id"/>
</group>
</sheet>
</form>
</field>
</data>
</openerp>
当没有域时,ascenario_form_view中的atype_id字段正确显示Atype列表...
我错过了什么? TY。
答案 0 :(得分:1)
对于解决方案而言,这是一个更好的答案:
对于动态域,例如选择国家/地区时,您只会显示该国家/地区的状态:
class Ascenario(models.Model):
_name = 'test.ascenario'
name = fields.Char()
description = fields.Text()
aclass_id = fields.Many2one('test.aclass')
atype_id = fields.Many2one('test.atype')
@api.onchange('aclass_id')
def daynamic_domain(self):
return {'domain': {'atype_id': [('aclass','=',int(self.aclass_id.id))]}}
但是: 如果您想要选择州时的预留状态,则会自动选择国家/地区:
class Ascenario(models.Model):
_name = 'test.ascenario'
name = fields.Char()
description = fields.Text()
aclass_id = fields.Many2one(related='atype_id.aclass',readonly=True)
atype_id = fields.Many2one('test.atype',)
答案 1 :(得分:0)
应该是这样的,
atype_id = fields.Many2one('test.atype', domain=[('aclass','=',aclass_id)])
当您在域中将该字段写为值时,无需在引号中指定字段名称,也无需在那里指定ID。