django-evolution错误

时间:2011-07-15 19:21:42

标签: python django django-models django-evolution

我正在尝试使用django-evolution来修改现有项目中的某些模型。现在,当我去syncdb时,它说我需要做一个'进化'。

当我尝试跑步时:

python manage.py evolve --hint --execute

我在终端显示此错误,但我仍然是新手,因此我无法排除此错误。

错误代码:

Traceback (most recent call last):
File "manage.py", line 11, in <module>
execute_manager(settings)
File "/home/steve/lib/python2.6/site-packages/django/core/management/__init__.py", line 361, in execute_manager
utility.execute()
File "/home/steve/lib/python2.6/site-packages/django/core/management/__init__.py", line 306, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/steve/lib/python2.6/site-packages/django/core/management/base.py", line 192, in run_from_argv
self.execute(*args, **options.__dict__)
File "/home/steve/lib/python2.6/site-packages/django/core/management/base.py", line 219, in execute
output = self.handle(*args, **options)
File "/var/sites/placeholder/placeholder/placeholder/apps/django_evolution/management/commands/evolve.py", line 87, in handle
hinted_evolution = diff.evolution()
File "/var/sites/placeholder/placeholder/placeholder/apps/django_evolution/diff.py", line 197, in evolution
changed_attrs[prop] = current_field_sig.get(prop, ATTRIBUTE_DEFAULTS[prop])
KeyError: 'field_type'

谢谢,希望有人可以帮助我。

史蒂夫

2 个答案:

答案 0 :(得分:2)

我已经解决了这个问题,我会发布任何遇到同一问题的人。

我意识到我的项目非常稳定。所以我备份了我的数据库并继续删除django_evolution使用的2个表。

然后我运行了一个syncdb来重新创建表。

这似乎有效,我能够做出我的进化。

答案 1 :(得分:2)

我将详细阐述史蒂夫的答案。

要查看django_evolution在项目数据库中创建的两个表,请使用以下命令:

python manage.py sql django_evolution

上面的命令并不是真的需要。您可以直接去除表格或重置表格。请注意,要使上述命令起作用,您需要在INSTALLED_APPS中使用名为“django_evolution”的应用程序。我将在Django1.2.7上提供一个对我有用的命令。是的,我仍然在1.2.7版本,因为到目前为止我没有理由升级。在我的答案结束时提供了解决这个问题的各种方法。您可以使用以下命令重置:

python manage.py reset django_evolution

输入“yes”接受重置查询。

现在使用以下命令执行数据库同步:

python manage.py syncdb

此命令将告诉您需要进化。输入以下命令以进行演变:

python manage.py evolve --hint

如果您对上述命令提供的提示没有问题,请继续执行evolution:

python manage.py evolve --hint --execute

输入“是”确认执行。

所有旧表和相关数据都可以无缝运行。要检查类型:

python manage.py runserver

How do I drop a table from SQLite3 in DJango?