[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