【问题标题】:django-evolution errordjango进化错误
【发布时间】:2011-10-06 10:19:28
【问题描述】:

我正在尝试使用 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'

谢谢,希望有人能帮帮我。

史蒂夫

【问题讨论】:

    标签: python django django-models django-evolution


    【解决方案1】:

    我已经解决了,我会发帖给遇到同样问题的人。

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

    然后我运行了一个同步数据库来再次创建表。

    这似乎奏效了,我能够进行我的进化。

    【讨论】:

      【解决方案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
      

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

      现在执行数据库同步:

      python manage.py syncdb
      

      这个命令会告诉你你需要进化。键入以下命令以进行进化:

      python manage.py evolve --hint
      

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

      python manage.py evolve --hint --execute
      

      输入“是”确认执行。

      您的所有旧表和相关数据都将无缝运行。检查类型:

      python manage.py runserver
      

      How do I drop a table from SQLite3 in DJango?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-09-16
        • 2015-02-07
        • 2016-05-01
        • 1970-01-01
        • 2012-08-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多