django - new - ValueError: el modelo relacionado u''app.model ''no se puede resolver
migrate new model django (4)
Acabo de recibir el mismo error, pero en referencia a un modelo que se declaró como parte de la misma migración. Resultó que las primeras migrations.CreateModel(...)
referían a un modelo aún no declarado. Moví manualmente esto debajo de la declaración del modelo referido y luego todo funcionó bien.
Tengo dos aplicaciones ( ook
y eek
dicen) y quiero usar una clave externa para un modelo en ook
de un modelo en eek
. Ambos están en INSTALLED_APPS
con ook
primero.
En ook.models.py
, tengo:
class Fubar(models.Model):
...
En eek.models.py
, tengo:
class monkey(models.Model):
external = models.ForeignKey(''ook.Fubar'', blank=True, null=True)
...
La migración generada es:
class Migration(migrations.Migration):
dependencies = [
(''eek'', ''0002_auto_20151029_1040''),
]
operations = [
migrations.AlterField(
model_name=''monkey'',
name=''external'',
field=models.ForeignKey(blank=True, to=''ook.Fubar'', null=True),
),
]
Cuando ejecuto la migración, me sale este error:
...
1595 raise ValueError(''Foreign Object from and to fields must be
the same non-zero length'')
1596 if isinstance(self.rel.to, six.string_types):
-> 1597 raise ValueError(''Related model %r cannot be resolved'' % self.rel.to)
1598 related_fields = []
1599 for index in range(len(self.from_fields)):
ValueError: Related model u''ook.Fubar'' cannot be resolved
¿Qué estoy haciendo mal?
Debido a que tiene ForeignKey
en las operaciones, debe agregar un ook
a las dependencies
:
dependencies = [
(''ook'', ''__first__''),
(''eek'', ''0002_auto_20151029_1040''),
]
Las migraciones de Django tienen dos valores "mágicos":
-
__first__
- obtener la primera migración del módulo -
__latest__
- obtener la última migración del módulo
Descubrí que parece que este error aún no se solucionó cuando se desplaza hacia abajo.
Django ValueError: Modelo relacionado no se puede resolver Error
Estoy usando 1.11.7, están hablando de 1.9.3.
Funcionó todo en localhost, pero siempre fallaba en Heroku, así que probé todas las opciones / respuestas anteriores y nada funcionó.
Luego me di cuenta de que la base de datos localhost en Admin. Tuve 1 perfil creado (1 registro de DB), fui a Heroku y DB tiene 0 registros para la tabla de Perfil, así que agregué 1, presioné la migración, python manage.py migrate y todo fue DE ACUERDO.
Eso valida que no tuve que cambiar ninguna de esas migraciones manualmente para que todas funcionen.
Tal vez ayude a alguien.
migraciones
# -*- coding: utf-8 -*-
# Generated by Django 1.11.7 on 2017-11-23 21:26
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
(''blog'', ''0005_blog_author''),
]
operations = [
migrations.AlterField(
model_name=''blog'',
name=''author'',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE,
to=''core.Profile''),
),
]
Encontré este error al intentar usar un modelo secundario de un modelo base como una clave externa. Tiene sentido que no funcionó porque no hay un campo de identificación en el modelo secundario. Mi solución fue usar el padre en la clave. Desafortunadamente esto no fue inmediatamente intuitivo y me retrasó un par de horas.