miércoles, 28 de junio de 2017

Creando data por defecto en django

Introducción.

Cuando te encuentras desarrollando una aplicación django, algunas veces es necesario poblar algunas tablas del proyecto con datos por defecto para nuestra aplicación, usualmente esto se utiliza para datos como tipos, países, código de área, usuarios, etc.

Para poder llevar esto a cabo utilizaremos el módulo migrations de django.

¡Manos a la obra!


Para demostrar como functiona esto,  nos pondremos en el caso de que estamos utilizando un proyecto django vacío. Por lo tanto ahora ejecutaremos el comando para crear una nueva app.

python manage.py startapp demo


Como se puede inferir actualmente tenemos un proyecto django con una aplicación llamada demo sin ningún modelo en él. Debido a esto, para poder demostrar como poblar datos por defecto haremos los cambios en la tabla Users la cual viene incluida en django. Antes de avanzar al siguiente paso,  recuerda añadir la app demo a la lista de INSTALLED_APPS en el archivo settings.py del proyecto.  Con esto terminado ejecutaremos este comando para crear un archivo de migración vacío.

python manage.py makemigrations --empty demo


Este comando nos generará un archivo como este en la carpeta migrations de la app demo.

from __future__ import unicode_literals

from django.db import migrations

class Migration(migrations.Migration):

    dependencies = [
    ]

    operations = [
    ]
Ahora debemos aplicar los siguientes cambios para crear un usuario por defecto en la base de datos.

from __future__ import unicode_literals

from django.db import migrations

def create_test_user(apps, schema_editor):
    from django.contrib.auth.models import User
    User.objects.create_superuser('test', 'test@mailinator.com', 'test')


class Migration(migrations.Migration):

    dependencies = [
    ]

    operations = [
        migrations.RunPython(create_my_user),
    ]

Tal como podemos ver, hemos añadido una función para crear un usuario, luego en el arreglo operations pasamos esta función como un método que debe ser utilizado cuando el comando migrate sea ejecutado.

Ahora para ver los cambios efectuados, usaremos el comando migrate.

python manage.py migrate

¡Y listo!

Desde mi punto de vista esta es la manera más simple para añadir data por defecto a una base de datos, el hecho de poder utilizar código python para llevarlo a cabo esto nos da la posibilidad de insertar una cantidad gigante de data utilizando for loops y variables aleatorias.

Ahora es tu turno de utilizar esto ejemplo como base para un modelo de tu proyecto. Recuerda comentar si tienes dudas o sugerencias.

¡Hasta Pronto!

No hay comentarios.:

Publicar un comentario

Como activar el comando python en el CMD de windows 10.

Un problema bastante común para los novatos de python que usan windows 10 es correr scripts en la linea de comando. Generalmente este proble...