Tras haber creado ya un campo "email" para mi modelo de usuario de
blog, he visto necesario crear después un segundo campo, "email_md5",
con el md5 checksum del mismo para tener cacheado el md5 para su uso
con Gravatar. Nada que no se pueda hacer sobrescribiendo el save:
def save(self, *args, **kwargs):
self.email_md5 = md5(self.email).hexdigest()
super(BlogUser, self).save(*args, **kwargs)
Ahora, el problema viene al crear la migración (hay que tener en
cuenta que el modelo ya existía previamente, es un campo adicionl
creado posteriormente), porque solo me permite usar datetime, y los
tipos estándar de Python. No permite hacer referencia a un campo del
modelo:
(nekmocom)[nekmo@homura ~/Workspace/nekmocom]$ ./manage.py makemigrations
You are trying to add a non-nullable field 'email_md5' to bloguser
without a default; we can't do that (the database needs something to
populate existing rows).
Please select a fix:
1) Provide a one-off default now (will be set on all existing rows)
2) Quit, and let me add a default in models.py
Select an option: 1
Please enter the default value now, as valid Python
The datetime and django.utils.timezone modules are available, so you
can do e.g. timezone.now()
>>>
Necesitaría, poder introducir algo como lo que ya tengo en el save:
self.email_md5 = md5(self.email).hexdigest()
Me imagino que por consola así no se le podrá dar solución, pero
tampoco sé ni veo nada sobre cómo puedo modificar el archivo de
migración creado para poder establecer un valor por defecto
dinámicamente.
Un cordial saludo:
-- Nekmo.
Sitio web:
http://nekmo.com
Dirección de contacto:
cont...@nekmo.com
XMPP/Jabber:
cont...@nekmo.com
Google+: Nekmo Com