如何在odoo中自动更改选择字段

时间:2016-05-07 00:12:47

标签: python openerp odoo-8

我正在使用Odoo 8.我的视图包含一组组合框类型字段和一个选择字段。我想对组合框字段进行测试,如果全部选中,则选择字段值应该更改。以下是我到目前为止的情况:

def get_etat_dossier(self,cr,uid,ids,args,fields,context=None):
    res = {}
    for rec in self.browse(cr,uid,ids):

        if rec.casier_judiciare==True: # test field if = true 
            res[rec.id]= 02 # field etat_dos type selection = Dossier Complet
        else:
            res[rec.id] = 01

    return res


_columns= {

   'casier_judiciare' : fields.boolean('Casier Judiciaire'), #  field to test 

   'reference_pro' : fields.boolean('Réferences Professionnelles'),
   'certificat_qual' : fields.boolean('Certificat de qualification'),
   'extrait_role' : fields.boolean('Extrait de Role'),
   'statut_entre' : fields.selection([('eurl','EURL'),('sarl','SARL')],'Statut Entreprise'),
   'etat_dos': fields.selection([('complet','Dossier Complet'),('manquant','Dossier Manquant')],'Etat De Dossier'), # field ho change after test 
}

enter image description here

以下是我的观点代码

<group col='4' name="doss_grp" string="Dossier de Soumission" colspan="4" >       <field name="casier_judiciare"/> 
    <field name="certificat_qual"/> 
    <field name="extrait_role"/> 
    <field name="reference_pro"/> 
    <field name="statut_entre" style="width:20%%"/> 
    <field name="etat_dos"/> 
</group>

1 个答案:

答案 0 :(得分:0)

onchange属性添加到casier_judiciare字段,然后将要检查的所有其他字段作为参数传递给方法

<group col='4' name="doss_grp" string="Dossier de Soumission" colspan="4" >
    <field name="casier_judiciare" on_change="onchange_casier_judiciare(casier_judiciare, certificat_qual, extrait_role, reference_pro)"/> 
    <field name="certificat_qual"/> 
    <field name="extrait_role"/> 
    <field name="reference_pro"/> 
    <field name="statut_entre" style="width:20%%"/> 
    <field name="etat_dos"/> 
</group>

在你的模型文件中定义这样的方法并使用if语句来检查它们是否都是True(这意味着它们都被检查过),如果是,那么你可以返回一个字典,其中包含你想要的任何值选择字段,在这种情况下,etat_dos将更改为Dossier Complet

def onchange_casier_judiciare(self, cr, uid, ids, casier_judiciare, certificat_qual, extrait_role, reference_pro, context=None):
    if casier_judiciare and certificat_qual and extrait_role and reference_pro: # if they're all True (that means they're all checked):
        values = {'value': {'etat_dos': 'complet'}} #set the value of etat_dos field

        return values

请注意onchange仅在casier_judiciare字段上触发,但您也可以在其他字段上设置onchange,它应该可以正常工作