Django 1.7迁移错误

时间:2014-12-10 18:04:29

标签: django django-1.7 django-migrations

我在一个名为Availability的模型上将CharField的字段更改为ForeignKey,当我尝试迁移时,我不断收到以下错误:

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)

App:useraccount

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

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

堆栈跟踪

系统检查确定了一些问题:

警告: notification.NoticeSetting.send:(1_6.W002)BooleanField没有默认值。     提示:Django 1.6将BooleanField的默认值从False更改为None。有关详细信息,请参阅https://docs.djangoproject.com/en/1.6/ref/models/fields/#booleanfield。 执行的操作:   应用所有迁移:预订 正在运行迁移:   应用reservation.0010_auto_20141210_0357 ... Traceback(最近一次电话会议):   文件" /Users/chirdeeptomar/envs/mydocbook/lib/python3.4/site-packages/django/apps/registry.py",第148行,在get_app_config中     return self.app_configs [app_label] KeyError:' useraccount'

在处理上述异常期间,发生了另一个异常:

1 个答案:

答案 0 :(得分: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文件派上用场的时候。

一个有问题的解决方案,但这是我的报复,当所有这些细节让我非常生气,我很喜欢它。