0

我在一个名为 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)

应用程序:用户帐户

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 运行迁移:应用reservation.0010_auto_20141210_0357 ... Traceback(最近一次调用最后):文件“/Users/chirdeeptomar/envs/mydocbook/lib/python3.4/site-packages/django/ apps/registry.py",第 148 行,在 get_app_config 中返回 self.app_configs[app_label] KeyError: 'useraccount'

在处理上述异常的过程中,又出现了一个异常:

4

1 回答 1

1

接下来是一个 hack,它在开发时应用起来非常容易,而且在学习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 文件派上用场的时候。

一个可怜的解决方案,但这是我的报复,当所有这些细节让我非常生气并且我很享受它时。

于 2014-12-10T18:48:52.627 回答