我正在尝试使用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'谢谢,希望有人能帮我。
史蒂夫
发布于 2011-07-19 03:16:08
我已经解决了这个问题,我会为任何遇到同样问题的人发帖。
我意识到我在我的项目中处于非常稳定的部分。因此,我备份了我的数据库,并删除了django_evolution使用的两个表。
然后,我运行syncdb来再次创建表。
这似乎起到了作用,我能够进行我的进化。
发布于 2013-05-09 16:25:02
我将详细说明史蒂夫的答案。
要查看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如果您同意上述命令提供的提示,请继续执行演进:
python manage.py evolve --hint --execute通过键入“yes”确认执行。
您的所有旧表和相关数据都将无缝工作。要检查类型,请执行以下操作:
python manage.py runserverhttps://stackoverflow.com/questions/6712149
复制相似问题