Development #13166
accès à _structured dans les variables
0%
Description
Par sûr des conséquences :
diff --git a/wcs/formdata.py b/wcs/formdata.py index 6743278..64da8fc 100644 --- a/wcs/formdata.py +++ b/wcs/formdata.py @@ -75,6 +75,7 @@ def get_dict_with_varnames(fields, data, formdata=None, varnames_only=False): new_data['var_%s_raw' % field.varname] = raw_value if field.store_structured_value and data is not None: structured_value = data.get('%s_structured' % field.id) + new_data['var_%s_structured' % field.varname] = structured_value if type(structured_value) is dict: for k, v in structured_value.items(): if k in ('id', 'text'):
Historique
Mis à jour par Frédéric Péters il y a plus de 7 ans
Ça donne un truc utile comme ça : form_var_blah_structured = [{'text': 'pomme', 'price': '5', 'id': '1'}, {'text': 'poire', 'price': '2', 'id': '2'}]
mais ça m'effraie un peu de sortir ça ainsi de la db, je préférerais plutôt pour cette situation avoir un form_var_blah_list_price = ['5', '2']
, mais ça suppose que tous les dictionnaires ont les mêmes clés.
Mis à jour par Frédéric Péters il y a plus de 7 ans
Dans cet esprit, en considérant que se baser sur les clés du premier élément est suffisant :
--- a/wcs/formdata.py +++ b/wcs/formdata.py @@ -86,6 +86,12 @@ def get_dict_with_varnames(fields, data, formdata=None, varnames_only=False): if k in ('id', 'text'): continue new_data['var_%s_%s_%s' % (field.varname, i, k)] = v + if len(structured_value): + for k in structured_value[0].keys(): + if k in ('id', 'text'): + continue + new_data['var_%s_list_%s' % (field.varname, k)] = [ + x.get(k) for x in structured_value] return new_data def flatten_dict(d):
Mis à jour par Frédéric Péters il y a plus de 7 ans
L'idée derrière c'est d'avoir une série de cases à cocher qui soit tirées d'une data source avec id/text + une clé "price"; et derrière de facilement faire le total. sum([x for x in form_var_blah_list_price if x])
voire sum(form_var_blah_list_price)
, ça me semble bien.
Mis à jour par Frédéric Péters il y a plus de 7 ans
sum([Decimal(x) for x in form_var_blah_list_price if x])
Mis à jour par Frédéric Péters il y a presque 4 ans
- Statut changé de Nouveau à Fermé