如何在odoo中自动更改选择字段
How to Change selection field automatically in odoo
我正在研究 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
}
这是我的视图代码
<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>
将 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 语句检查它们是否全部为真(这意味着它们都已被检查),如果是这样那么你可以 return 一个字典选择字段的任何值,在本例中 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
,它应该可以正常工作
我正在研究 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
}
这是我的视图代码
<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>
将 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 语句检查它们是否全部为真(这意味着它们都已被检查),如果是这样那么你可以 return 一个字典选择字段的任何值,在本例中 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
,它应该可以正常工作