Ошибка миграции Django 1.7

Я изменил поле с CharField на ForeignKey в модели под названием Availability, когда я пытаюсь выполнить миграцию, я продолжаю получать сообщение об ошибке ниже:

ValueError: Lookup failed for model referenced by field reservation.Availability.location: useraccount.Location

Любая идея, почему это может происходить?

Спасибо

--------------ОБНОВЛЕННЫЙ КОД---------------

Приложение: бронирование

from useraccount.models import Location

class Availability(models.Model):
    location = models.ForeignKey(Location)

Приложение: учетная запись пользователя

class Location(models.Model):
    town = models.CharField(max_length=100)
    county = models.CharField(max_length=100)

    def __str__(self):
        return self.town + ', ' + self.county

Трассировки стека

Проверка системы выявила некоторые проблемы:

ПРЕДУПРЕЖДЕНИЯ: уведомление.NoticeSetting.send: (1_6.W002) BooleanField не имеет значения по умолчанию. СОВЕТ: Django 1.6 изменил значение BooleanField по умолчанию с False на None. См. https://docs.djangoproject.com/en/1.6/ref/models/fields/#booleanfield для получения дополнительной информации. Операции, которые нужно выполнить: Применить все миграции: резервирование Запуск миграций: Применение резервирования.0010_auto_20141210_0357... Трассировка (последний последний вызов): Файл "/Users/chirdeeptomar/envs/mydocbook/lib/python3.4/site-packages/django/ apps/registry.py", строка 148, в get_app_config возвращает self.app_configs[app_label] KeyError: 'useraccount'

Во время обработки вышеупомянутого исключения произошло другое исключение:


person Chirdeep Tomar    schedule 10.12.2014    source источник
comment
Вы уже запускали makemigrations?   -  person cdvv7788    schedule 10.12.2014
comment
Да, когда я добавил местоположение в приложение учетной записи пользователя, эта миграция применяется. У меня также есть внешний ключ Location для моделей в приложении useraccount, который успешно перенесен. Порядок примененных миграций кажется правильным.   -  person Chirdeep Tomar    schedule 10.12.2014
comment
Полную трассировку, пожалуйста   -  person doniyor    schedule 10.12.2014
comment
Вы делали и миграцию, и миграцию?   -  person doniyor    schedule 10.12.2014
comment
Да, приложение учетной записи пользователя перенесено, кроме последнего.   -  person Chirdeep Tomar    schedule 10.12.2014
comment
Если удалить файл sqlite и выполнить syncdb, я получаю django.db.utils.OperationalError: нет такой таблицы: useraccount_location   -  person Chirdeep Tomar    schedule 10.12.2014
comment
У вас последняя версия django? Я могу найти несколько сообщений с похожим контекстом, но они, похоже, решаются после обновления. 1, 2, 3.   -  person raratiru    schedule 10.12.2014
comment
Вы также можете проверить этот пост.   -  person raratiru    schedule 10.12.2014
comment
Я просто удалил БД и заново создал миграции... все заработало.   -  person Chirdeep Tomar    schedule 11.12.2014
comment
Я знаю, это звучит как мой ответ ниже.   -  person raratiru    schedule 11.12.2014


Ответы (1)


Далее следует хак, который так легко и так неприятно применять при разработке или даже лучше при изучении других частей django, и вам просто нужно быстрое решение, чтобы получить работу. сделано...проще говоря, грех...как горький шоколад.

Прежде всего, я сохраняю данные своей базы данных в файле json на случай, если мне понадобится ее перестроить:

./manage.py dumpdata --exclude auth.permission --exclude contenttypes  --exclude reversion --exclude admin.LogEntry --indent 2 > db.json

Когда я что-то меняю в своих моделях и вижу, что миграции начинают выдавать ошибки, я пытаюсь удалить все, что касается рассматриваемого приложения, из базы данных (или, что еще лучше, из всей базы данных), а затем перестраиваю ее:

$./manage.py migrate <myapp1> zero #No need for this if the whole database is destroyed
$rm -Rf <myapp(s/1)>/migrations/*
$./manage.py makemigrations <myapp1>( <myapp2> ... <myappN>)
$./manage.py migrate <myapp(s/1)>
$./manage.py loaddata ...

В большинстве случаев это быстрее, чем отладка ошибки. Иногда, однако, вызывает больше проблем, чем должно решить. Это когда JSON-файл базы данных пригодится.

Жалкое решение, но это моя месть, когда все эти детали меня очень злят и мне это нравится.

person raratiru    schedule 10.12.2014
comment
Кстати, очень плохой и уродливый способ, я не рекомендую этот способ только из-за миграции одного столбца. - person doniyor; 10.12.2014
comment
Да, это взлом. Уродливо и грешно, но в большинстве случаев я вношу изменения, я уже расстроен и не могу больше терпеть. Я просто хочу, чтобы изменения произошли. Я еще раз извиняюсь, так как это своего рода людоедское решение, которое, тем не менее, работает в обоих направлениях: путь джанго и путь моих личных проблем. - person raratiru; 10.12.2014
comment
Если у вас есть большая БД с живыми данными, используемыми миллионами пользователей в секунду, то ваш хак не должен использоваться. - person doniyor; 10.12.2014
comment
Действительно, применяйте его только во время разработки. Это ясно. - person raratiru; 10.12.2014
comment
мы фактически делаем что-то подобное здесь, и я все еще хотел бы лучший способ справиться с переделкой миграций. :-/ - person szeitlin; 26.10.2015