DJANGO - MIGRACIONES

En esta sesión introducimos el concepto de migraciones, el mecanismo en Django para llevar control de las modificaciones a los Modelos de datos, incluyendo cómo verificar los cambios realizados antes de aplicarlos sobre el motor de base de datos utilizado.

Cargando video...

NOTA: Solo puedes ver una versión limitada del video a baja resolución, si quieres ver la versión completa por favor regístrate y obtén alguno de nuestros planes!

Descripción del Vídeo

Luego de agregar (o modificar) las clases de Modelos, Django es capaz de utilizar esa información para:
Crear/modificar la estructura de la base de datos (generar los comandos SQL de CREATE TABLE, etc)
Brindar una API en Python para acceder a los objetos de base de datos

Si no se ha hecho antes, debemos "activar" la aplicación en nuestro proyecto, en el archivo "settings.py" de éste y editando la variable de configuración INSTALLED_APPS.

Una migración es la manera como Django almacena los cambios realizados en los modelos (y por tanto, a las estructuras de datos). Esto permite que Django pueda llevar un historial de dichos cambios, además de estar disponibles también en nuestro repositorio de control de versiones. Con esto, se puede actualizar y/o revertir la definición de las estructuras hasta una versión particular durante el desarrollo, además de poder compartir dichos cambios en la estructura de base de datos con el equipo de desarrollo de manera sencilla.

Si queremos indicar a Django que hicimos modificaciones en nuestro modelo, ejecutamos:
python manage.py makemigrations encuestas

Luego de esto, podemos (opcionalmente) examinar el código SQL necesario para aplicar los cambios en nuestra BD (esto no aplica aún los cambios en la BD):
python manage.py sqlmigrate encuestas 0001

Para aplicar efectivamente los cambios a nuestra base de datos (se ejecutarán los comandos vistos en el paso anterior):
python manage.py migrate

Código disponible en:
https://github.com/networkfaculty/Fundamentos-Django/releases/tag/d-2.1.4

-Migración inicial generada en curso/encuestas/migrations/0001_initial.py:
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import migrations, models


class Migration(migrations.Migration):


   dependencies = [
   ]

   operations = [
       migrations.CreateModel(
           name='Opcion',
           fields=[
               ('id', models.AutoField(serialize=False, auto_created=True, verbose_name='ID', primary_key=True)),
               ('texto_opcion', models.CharField(max_length=200)),
               ('votos', models.IntegerField(default=0)),
           ],
       ),
       migrations.CreateModel(
           name='Pregunta',
           fields=[
               ('id', models.AutoField(serialize=False, auto_created=True, verbose_name='ID', primary_key=True)),
               ('texto_pregunta', models.CharField(max_length=200)),
               ('fe_publicacion', models.DateTimeField(verbose_name='Fecha de Publicación')),
           ],
       ),
       migrations.AddField(
           model_name='opcion',
           name='pregunta',
           field=models.ForeignKey(to='encuestas.Pregunta'),
       ),
   ]

Rating

Global

Ver video en playlist

comments powered by Disqus

Headshot of Juan Paredes

Juan Paredes

Ingeniero de Sistemas con amplia experiencia, especializado en el desarrollo y arquitectura de software.