[Python] C'e' un modo per abbreviare questa sintassi?
orsomannaro
orsomannaro a gmail.com
Mer 7 Nov 2012 18:36:55 CET
Il 07/11/2012 15:17, Nicola Larosa ha scritto:
>>> numero1 = str2int(get_num(...))
>>> numero2 = str2int(get_num(...))
>>> numero3 = str2int(get_num(...))
>>> ...
>>> if numero1 and numero2 and numero3 and ...:
>>> my_obj.codice1 = numero1
>>> my_obj.codice2 = numero2
>>> my_obj.codice3 = numero3
Credo di non aver presentato bene il problema tralasciando qualche
informazione ....
Devo inserire dati letti da un file in un model di Django
In base ai parametri passati, get_num() mi ritorna un pezzo della
stringa letta dal file, che devo eventualmente convertire in numero e
assegnare a un campo del model.
Alcuni campi del model sono obbligatori (quelli che verifico non siano
Null) mentre altri campi posso anche essere Null
Inoltre sto usando il metodo "bulk_create" di Django seguendo questo:
http://www.caktusgroup.com/blog/2011/09/20/bulk-inserts-django/
per tanto stocco un po' di oggetti in una lista e poi li salvo in blocco.
Quindi:
- il controllo non posso farlo su get_num perche' in alcuni casi Null
puo' anche andar bene
- a quanto pare se assegno Null a un campo che non puo' esserlo, me ne
accorgo solo quando cerco di salvare su database, quindi non servirebbe:
try:
my_obj.codice1 = str2int(get_num(...))
my_obj.codice2 = str2int(get_num(...))
my_obj.codice3 = str2int(get_num(...))
except:
continue
perche' mi accorgerei di aver assegnato un valore scorretto solo dopo
aver elaborato e star salvando centinaia di oggetti.
Quindi per ora il metodo che sto usando mi risulta l'unica soluzione.
Maggiori informazioni sulla lista
Python