ValueError: связанная модель u'App.модель не может быть решен
у меня есть два приложения (ook и eek say), и я хочу использовать внешний ключ к модели в ook на основе модели eek. Оба в INSTALLED_APPS С ook первый.
на ook.models.py, я:
class Fubar(models.Model):
    ...
на eek.models.py, Я:
class monkey(models.Model):
    external = models.ForeignKey('ook.Fubar', blank=True, null=True)
    ...
генерируется миграция:
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),
        ),
    ]
когда я запускаю миграцию, я получаю эту ошибку:
   ...
   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
что я делаю не так?
4 ответов
потому что у вас есть ForeignKey в операциях необходимо добавить ook to dependencies:
dependencies = [
    ('ook', '__first__'),
    ('eek', '0002_auto_20151029_1040'),
]
миграции Django имеют два "волшебных" значения:
- 
__first__- получить модуль первой миграции
- 
__latest__- получить модуль последней миграции
Я только что получил ту же ошибку, но ссылаясь на модель, которая была объявлена как часть той же миграции. Оказалось, что первый migrations.CreateModel(...) относится к еще не объявленной модели. Я вручную переместил это ниже объявления упомянутой модели, а затем все сработало нормально.
Я обнаружил, что похоже, что эта ошибка еще не исправлена, когда вы прокручиваете вниз.
Django ValueError: связанная модель не может быть решена ошибка
Я использую 1.11.7, они говорят о 1.9.3.
он работал все на localhost, но всегда терпел неудачу на Heroku, поэтому я проверил все варианты/ответы выше, и ничего не сработало.
тогда я заметил, localhost DB в Admin у меня был создан 1 профиль (1 DB record), пошел в Heroku и DB имеет 0 записей для таблицы профилей, поэтому я добавил 1, нажал миграцию, python manage.py мигрировать и все прошло нормально.
это подтверждает, что мне не нужно было изменять какие-либо из этих миграций вручную, что все работает.
может быть, это поможет кому-то.
миграция
# -*- 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'),
        ),
    ]
Я столкнулся с этой ошибкой при попытке использовать модель ребенок базовой модели в качестве внешнего ключа. Имеет смысл, что это не сработало, потому что в дочерней модели нет поля id. Моим решением было использовать родителя на ключе. К сожалению, это не было сразу интуитивным и отбросило меня на пару часов.
