[pyar] Migraciones en Django 1.7c1

Ramiro Morales cramm0 en gmail.com
Lun Jun 30 13:09:06 ART 2014


2014-06-30 12:45 GMT-03:00 Manuel Kaufmann <humitos en gmail.com>:
> Hola PyAreros!
>
> No tuvimos mejor idea que empezar un nuevo proyecto con Django 1.7. Ya
> solucioné varios problemas de apps de terceros, que no fue nada fácil,
> y venía bastante contento con haber podidos resolver esos temas.
>
> Dos características fuertes de Django 1.7 es que:
>
>  1. te deja usar un modelo User personalizado: ya no es necesario
> hacer un UserProfile
>
>  2. vienen incluídas las migraciones
>
> En el proyecto en el que estoy estamos haciendo uso de 1) y queremos
> hacer uso de 2), pero ahí viene el problema que estoy teniendo.
>
> Cuando empecé a programar en Django 1.7, como no entendía muy bien
> cómo funcionaban las migraciones, leí la doc, tiré algunos comandos y
> me complicó la vida. Así que, como en ese momento estaba solo
> desarrollando y necesitaba ver algunos resultados (no había team ni
> servidor de staging) dejá las migraciones de lado por un tiempo.
>
> Hoy hicimos un deploy a staging y obviamente, tengo que poner en
> marcha las migraciones. Aquí el problema:
>
>  1. Todas mis apps tienen  la carpeta "migrations/" con su
> "__init__.py" vacío dentro
>  2. Borro la base de datos, para que quede sin tablas ni nada...
>  3. Corro "manage.py makemigrations" y me genera varios archivos (a
> veces más de uno por app) con las migraciones y sus dependencias entre
> las apps
>  4. Corro "manage.py migrate" y recibo un error de "Dependencias circulares"
>
> Traceback (most recent call last):
>   File "/home/humitos/Source/chap/manage.py", line 10, in <module>
>     execute_from_command_line(sys.argv)
>   File "/home/humitos/.virtualenvs/chap/local/lib/python2.7/site-packages/django/core/management/__init__.py",
> line 385, in execute_from_command_line
>     utility.execute()
>   File "/home/humitos/.virtualenvs/chap/local/lib/python2.7/site-packages/django/core/management/__init__.py",
> line 377, in execute
>     self.fetch_command(subcommand).run_from_argv(self.argv)
>   File "/home/humitos/.virtualenvs/chap/local/lib/python2.7/site-packages/django/core/management/base.py",
> line 288, in run_from_argv
>     self.execute(*args, **options.__dict__)
>   File "/home/humitos/.virtualenvs/chap/local/lib/python2.7/site-packages/django/core/management/base.py",
> line 337, in execute
>     output = self.handle(*args, **options)
>   File "/home/humitos/.virtualenvs/chap/local/lib/python2.7/site-packages/django/core/management/commands/migrate.py",
> line 106, in handle
>     plan = executor.migration_plan(targets)
>   File "/home/humitos/.virtualenvs/chap/local/lib/python2.7/site-packages/django/db/migrations/executor.py",
> line 48, in migration_plan
>     for migration in self.loader.graph.forwards_plan(target):
>   File "/home/humitos/.virtualenvs/chap/local/lib/python2.7/site-packages/django/db/migrations/graph.py",
> line 55, in forwards_plan
>     return self.dfs(node, lambda x: self.dependencies.get(x, set()))
>   File "/home/humitos/.virtualenvs/chap/local/lib/python2.7/site-packages/django/db/migrations/graph.py",
> line 121, in dfs
>     return _dfs(start, get_children, [])
>   File "/home/humitos/.virtualenvs/chap/local/lib/python2.7/site-packages/django/db/migrations/graph.py",
> line 113, in _dfs
>     results = _dfs(n, get_children, path) + results
>   File "/home/humitos/.virtualenvs/chap/local/lib/python2.7/site-packages/django/db/migrations/graph.py",
> line 113, in _dfs
>     results = _dfs(n, get_children, path) + results
>   File "/home/humitos/.virtualenvs/chap/local/lib/python2.7/site-packages/django/db/migrations/graph.py",
> line 113, in _dfs
>     results = _dfs(n, get_children, path) + results
>   File "/home/humitos/.virtualenvs/chap/local/lib/python2.7/site-packages/django/db/migrations/graph.py",
> line 105, in _dfs
>     raise CircularDependencyError(path[path.index(start):] + [start])
> django.db.migrations.graph.CircularDependencyError: [('challenge',
> u'0001_initial'), (u'team', u'0001_initial'), ('challenge',
> u'0001_initial')]
>
> Estuve leyendo por acá [1] pero no encuentro la info que necesito ni
> entiendo porqué recibo ese error. De hecho, lo que dice la doc para mi
> tiene muchísimo sentido, pero lo que me sucede... No...
>
> ¿Alguna idea? ¿Puede ser que esto todavía esté verde?

Puede que si.

¿Podrías armar un tarball para jugar un ratito?

Mejor aun si podes reducir ambas (¿? ¿tema y challenge?) apps a algo
mínimo (sacando todos los campos espureos de los modelos) con las
relaciones entre modelos de ambas y las migraciones que parecen tener
ese problema (las 0001_initial) y en el cual se pueda ver el problema?

Pregunta: ¿Largaste con 1.7rc1 de cero o tenes algunas migraciones
creadas con Django pre-1.7rc1?

>
> Gracias,
>
> [1]  https://docs.djangoproject.com/en/dev/topics/migrations/#dependencies
>
>
> --
> Kaufmann Manuel
> -- http://elblogdehumitos.com.ar
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina - http://www.usla.org.ar



-- 
Ramiro Morales
@ramiromorales


More information about the pyar mailing list