我在同一个类和视图中有两个 many2one 字段(list1 和 list2)。我希望当用户从 list1 中选择一个值时,list2 会使用限制域值自动更新。这个完成了
但我还希望删除 list2 的“以前”选择的值,以便用户被迫重新选择它,如果他之前在 list2 中选择了一个值,然后在 list1 中重新选择。因为域限制仅更新 list2 但保留 list2 以前(现在不相关)的值并且用户可以通过。感谢任何帮助!
这是我的代码,其中 cours_id 是与 veiw 中的 list2 对应的字段名称,而 salle_de_classe_id 是与 list1 对应的字段名称:
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}}
此代码清除 list2(cours_id 字段),但我收到此错误
ProgrammingError: ERREUR: l'opérateur n'existe pas : integer = boolean LINE 1: ....id FROM "schoolem_cours" WHERE schoolem_cours.id IN (false)... ^ 提示:Aucun opérateur ne 对应 au nom donné et aux类型 d'arguments。Vous devez ajouter des conversions 显式类型。