我在一个名为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'
在处理上述异常期间,发生了另一个异常:
答案 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文件派上用场的时候。
一个有问题的解决方案,但这是我的报复,当所有这些细节让我非常生气,我很喜欢它。