我的代码:
class kho(osv.osv):
_name = "tt_kho"
_columns = {
'name': fields.char('Mã nguyên liệu ',size=20,required=True),
'ten': fields.char('Tên nguyên liệu',size=100,required=True),
'loai': fields.char('Loại vật liệu',size=100,required=True),
'soluong':fields.integer('Số lượng hiện có',required=True),
}
class nguyenlieu(osv.osv):
_name = "tt_nguyenlieu"
_columns = {
'name': fields.many2one('tt_kho','Mã nguyên liệu',required=True),
'ten': fields.char('Tên nguyên liệu',size=100,required=True),
'loai': fields.char('Loại vật liệu',size=100,required=True),
'soluong':fields.integer('Số lượng cần',required=True),}
def onchange_ten(self,cr,uid,ids,name,context=None):
value={}
if name:
record_id=self.pool.get('tt_kho').search(cr,uid,[('name','=',name)],context=context)
record=self.pool.get('tt_kho').browse(cr,uid,record_id[0],context=context)
value['ten']=record.ten
else:
value['ten']=None
return {'value':value}
nguyenlieu()
我的xml文件:
<record id="nlform" model="ir.ui.view">
<field name="name">Nguyên liệu</field>
<field name="model">tt_nguyenlieu</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form>
<group col="2">
<field name="name" on_change="onchange_ten(name)"/>
<field name="ten"/>
<field name="loai"/>
<field name="soluong"/>
</group>
</form>
</field>
</record>
这是错误:
Traceback (most recent call last):
File "C:\openerp-8.0rc1\openerp\addons\DoanERP\core.py", line 24, in onchange_ten
record=self.pool.get('tt_kho').browse(cr,uid,record_id[0],context=context)
IndexError: list index out of range
当我在“Nguyêlinệu”表格中选择值名称时,会出现此错误。
我添加了一些代码而没有显示错误,但看起来它无法从tt_kho获取记录ID。它只显示'哈哈'。
def onchange_ten(self,cr,uid,ids,name,context=None):
value={}
if name:
record_id=self.pool.get('tt_kho').search(cr,uid,[('name','=',name)],context=context)
if record_id:
record=self.pool.get('tt_kho').browse(cr,uid,record_id[0],context=context)
value['ten']=record.ten
else:
value['ten']='haha'
else:
value['ten']=None
return {'value':value}
答案 0 :(得分:2)
Odedra是对的,但我想指出两件事:
这应该是诀窍 - 让我们知道,如果那也不起作用。