0

我在同一个类和视图中有两个 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 显式类型。

4

1 回答 1

0

你说设置一个新域已经完成,所以我假设你已经编写了一个on_changelist1 的方法,它返回类似这样的内容。

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

要重置该值,只需添加一个值...

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

传回 False 值将清除该字段。

于 2013-10-23T08:51:52.833 回答