viernes, 7 de diciembre de 2018

[Django 2.1] Agregar Usuario que crea un registro en el modelo


 #Django #tutorial #Elearning #Web #Desarrollo #PostgreSQL #Migrations

En esta nueva entrada, voy a explicar cómo agregar un atributo llamado creadopor en el modelo, que luego se convertirá en el campo creadopor de la tabla (modelo) Categoria.
Te he marcado los cambios que se debe hacer en el modelo.



Luego de eso debes crear una migración
manage.py makemigrations

Si ya tienes registros en la base de datos, el orm de Django te pedirá que des valor del nuevo campo para los registros existentes.


Yo le di el valor de 1, ya que el campo es de tipo numérico, porque ahí se graba el id del usuario y el usuario 1 (en mi caso) es el admin



Y finaliza el comando makmigrations



Para ver el estado de la migración, lo haces con manage.py showmigrations


Puedes ver que está una migración sin aplicar, llamada 006_categoria_creadopor en la aplicación catalogos
Para ver la instrucción que ejecutará django sobre postgresql, se hace con el comando
manage.py sqlmigrate [nombreapp]  [id de migracion]
en nuestro caso sería
manage.py sqlmigrate catalogos 0006_categoria_creadopor


Ya en esta etapa, puedes realizar la migración con el comando
manage.py migrate


Si consultas el registro de las categorías en la base de datos, podrás ver ya el nuevo campo con el valor escogido para los registros ya existentes.



Ahora sólo faltaría decirle a Django que cuando se cree una nueva categoría, se tome el id del usuario activo. Para esto hay que sobreescribir el evento form_valid de la vista create de categoría.



Y con eso ya está listo, puedes hacer las pruebas insertando registros y ve cómo se van agregando. 
En mi caso, entré al sistema con otro usuario y creé una nueva categoría, teniendo como salida desde la base de datos lo siguiente:


Y puedes ver cómo le asignó el id de ese otro usuario.


Si tienes dudas, favor contactarme por medio de este blog o los enlaces de mis redes sociales.


0 comentarios:

Publicar un comentario

¿Tienes algún comentario? ¿Qué te ha parecido este artículo? Cuéntalo.

 
>