python - tutorial - gestion de usuarios django
La actualizaciĆ³n de Django 1.6(con sur) a 1.8 no modifica ''last_login'' en la tabla de usuarios (1)
Como se señala en las notas de la versión 1.8 :
Si está utilizando un modelo de usuario personalizado que se hereda de
AbstractUser
, necesitará ejecutarmakemigrations
y generar una migración para su aplicación que contenga ese modelo.
He actualizado de Django 1.6.5 (con migraciones al sur) a Django 1.8. He seguido las instrucciones aquí: https://docs.djangoproject.com/en/1.8/topics/migrations/#upgrading-from-south
Por lo tanto, python manage.py makemigrations
mis migraciones anteriores y ejecuto python manage.py makemigrations
que python manage.py makemigrations
un nuevo archivo de migración. Luego ejecuto python manage.py migrate --fake-initial
para falsificar la migración inicial. Luego ejecuto python manage.py migrate
.
Todo funciona bien sin errores.
Tengo un modelo de usuario personalizado que hereda AbstractBaseUser
. En Django 1.8 parece que hay un cambio en el campo last_login
donde ahora puede aceptar un valor null
( https://docs.djangoproject.com/fr/1.8/ref/contrib/auth/#django.contrib.auth.models.User.last_login ).
El problema que tengo es que la migración no cambia el campo last_login
en la tabla de la base de datos para aceptar valores nulos. Como resultado, cuando intento guardar (1048, "Column ''last_login'' cannot be null")
IntegrityError
(1048, "Column ''last_login'' cannot be null")
.
¿Cómo puedo arreglar esto? ¿Necesito cambiar manualmente el campo en la base de datos, o hay alguna forma de solucionarlo con migraciones?
Editar Cuando ejecuto python manage.py migrate --fake-initial
la salida es la siguiente: Ejecutando migraciones:
Rendering model states... DONE
Applying contenttypes.0001_initial... FAKED
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0001_initial... FAKED
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying core.0001_initial... FAKED
Applying admin.0001_initial... FAKED
Applying sessions.0001_initial... FAKED
Sin embargo, cuando busco en la base de datos todavía veo user_last_login
como no-nulo.