2013-10-22 38 views
0

我有两个many2one字段(list1和list2)在同一个类和视图。我希望当用户从list1中选择一个值时,list2会自动使用限制域值进行更新。这是完成域限制,并清除之前选择的many2one字段的值

但我也希望“先前”选定的值list2被删除,以便用户强制重新选择它,如果他先前已在列表2中选择一个值,然后在列表1中重新选择。由于域限制只会更新list2,但保留list2的以前(现在不会)值,并且用户可以通过。 Thx任何帮助!

这是我的代码,其中cours_id是对应的教职员和salle_de_classe_id到列表2字段名是对应于列表1的一个:

def on_change_salle_de_classe_id(self,cr,uid,ids,salle_de_classe_id,context=None): 
    salle_de_classe = self.pool.get('schoolem.salle_de_classe').browse(cr,uid,salle_de_classe_id) 

    cours_obj = self.pool.get('schoolem.cours') 
    ids1 = cours_obj.search(cr, uid, [('niveau_id.id', '=', salle_de_classe.classe_id.niveau_id.id)]) 
    ids2 = cours_obj.search(cr, uid, [('niveau_id.id', '=', salle_de_classe.classe_id.niveau_id.id),('specialite_id.id', '=', salle_de_classe.classe_id.specialite_id.id)]) 
    #return {'domain':{'cours_id':[('id','in',ids1+ids2)]}} 
    return {'domain':{'cours_id':[('id','in',ids1+ids2)]},'value':{'cours_id':False}} 

此代码清晰的列表2(cours_id场),但我得到这个错误

ProgrammingError:ERREUR:1'-opérateurn'existe PAS:整数=布尔 LINE 1:.... ID FROM “schoolem_cours” WHERE schoolem_cours.id IN(假)... ^ 建议:AucunopérateurNE相当于au nom nom don et et aux types d'argumen TS。 Vous devez ajouter des conversions explicites de type。

回答

0

你说设置一个新域名已经完成了,所以我推测你已经写了一个list1的on_change方法,返回类似这样的东西。

{'domain': {'list2': ..... 

要重置价值只是增加值...

{'domain': ..., 
'value': {'list2': False}} 

传回False值将清除该字段。

+0

但是得到这个错误:ProgrammingError: Aucunopérateurne对应于au nom nomdonnéet aux类型的论点。 Vous devez ajouter des转换显式类型。 – levolutionniste

+0

谢谢你的作品。我已经对list2进行了另一个on_change操作,并且这是给我错误的地方。我修好了。请问如何一次返回多个字段的许多值? Thx – levolutionniste

+0

嘿,你只需要将你需要的任何字段保存到值字典中 - res = {'value':{'field1':1,'field2':'abc','field3':False}}。请注意,您也可以重新计算诸如功能字段或只读字段之类的内容,并将它们还原。您可以传回字典中的onchange三项是域,值和警告(或空字典)。干杯,阿德里安 –

相关问题