[pyar] Personalizar ID al guardar modelo en Django.
Carlos Joel Delgado Pizarro
carlosj2585 en gmail.com
Vie Ago 24 12:55:32 ART 2012
Buenas, al guardar un modelo tengo que personalizar el ID (que es
autogenerado) para darle un formato con AñoMesID. Tengo el siguiente
código, el cual funciona, pero no como yo quiero, al menos no al principio:
def generate_yearmonthid(old_id, none_to_zero=True):
"""
Returns ID as string with a new format year+month+id having ID
filled with 4 zeros.
if none_to_zero is True (wich is the default) and old_id is
None, it
will be converted to 0, else it will remain None.
"""
# See if old_id is None and user wants to change to 0
if none_to_zero and old_id == None:
old_id = 0
# Do some magic to make a personalized ID using year+month+ID
new_id = datetime.datetime.now().strftime('%Y%m') +
str(old_id).zfill(4)
return new_id
def save(self, *args, **kwargs):
"""
Override save method, to get a personalized ID
"""
super(Reception, self).save(*args, **kwargs) # 1st code
autogenerated
# super goes first, to autogenerate the code, then call
generate_code
# to add the string
print '1st ID:', self.id
if len(str(self.id)) < 4:
self.id = generate_yearmonthid(self.id)
print '2nd ID:', self.id
super(Reception, self).save(*args, **kwargs) # 2nd save
with new code
Hice un print para ver el ID, y el seguimiento es el siguiente
Cuando guardo el primer elemento generado por el modelo
1st ID: 1
2nd ID: 2012080001
Cuando guardo los siguientes elementos
1st ID: 2012080002
1st ID: 2012080003
Y cada uno genera un registro en la BD, por lo que hasta ahí ya tengo 4,
no debería guardar el primero que es ID=1.
¿Hay alguna otra manera mas fácil, rápida de personalizar el ID para que
quede con el formato que quiero?
En google no encontré mucho (por no decir nada).
Gracias
--
Saludos.
Carlos Joel Delgado Pizarro
Consultor TI-FLOSS
http://carlosjdp.info
http://gplus.to/carlosj2585
Linux User Registered #460895
Ubuntu User Registered #28720
More information about the pyar
mailing list