2016-07-04 63 views
1

我想根據特定「場景」的'類'來過濾'類型'的列表,但它會產生空字段或DataError,具體取決於在我使用的過濾器上。Odoo 9.0域,三個模型和兩個many2one字段

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> 

的atype_id場在ascenario_form_view正確地顯示在沒有域我錯過了A型列表...

? TY。

回答

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',) 
0

它應該是這樣的,

atype_id = fields.Many2one('test.atype', domain=[('aclass','=',aclass_id)]) 

無需在報價指定字段名,而你寫的域值場,沒必要在那裏指定ID。

+0

感謝您的輸入。但是,該選項仍會導致視圖表單中的空(atype_id)選擇字段。缺了點什麼。 – Louis

+0

'test.aclass'中是否有任何數據? –

+0

當然;) - 正如我所提到的,「ascenario_form_view中的atype_id字段在沒有域時正確顯示Atype列表...」//但atype_id未根據aclass_id過濾 – Louis

相關問題