从Django 1.4向Django 1.3向后迁移

时间:2012-12-21 16:11:30

标签: django django-nonrel

有时候我的愚蠢,鲁莽和胆大妄为的编程让我走到了一些危险的地方:

我已经使用sqlite3启动了一个Django 1.4应用程序,然后转移到mysql,没什么大不了的。但后来我意识到我的模型非常适合NoSql模型并且决定尝试使用django-nonrel的MongoDB,它是Django 1.3的一个分支,支持非关系数据库。版本1.4仍未准备好使用。

所以,我已经分支了我的回购,创建了我的virtualenv和pipinstalled django-nonrel但是当我运行./manage.py shell时我收到了这条消息

Traceback (most recent call last):
  File "./manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/Users/marcoslhc/Documents/Proyectos/fontcase/mongoBE/lib/python2.7/site-packages/django/core/management/__init__.py", line 429, in execute_from_command_line
    utility.execute()
  File "/Users/marcoslhc/Documents/Proyectos/fontcase/mongoBE/lib/python2.7/site-packages/django/core/management/__init__.py", line 379, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Users/marcoslhc/Documents/Proyectos/fontcase/mongoBE/lib/python2.7/site-packages/django/core/management/__init__.py", line 252, in fetch_command
    app_name = get_commands()[subcommand]
  File "/Users/marcoslhc/Documents/Proyectos/fontcase/mongoBE/lib/python2.7/site-packages/django/core/management/__init__.py", line 101, in get_commands
    apps = settings.INSTALLED_APPS
  File "/Users/marcoslhc/Documents/Proyectos/fontcase/mongoBE/lib/python2.7/site-packages/django/utils/functional.py", line 276, in __getattr__
    self._setup()
  File "/Users/marcoslhc/Documents/Proyectos/fontcase/mongoBE/lib/python2.7/site-packages/django/conf/__init__.py", line 42, in _setup
    self._wrapped = Settings(settings_module)
  File "/Users/marcoslhc/Documents/Proyectos/fontcase/mongoBE/lib/python2.7/site-packages/django/conf/__init__.py", line 139, in __init__
    logging_config_func(self.LOGGING)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/config.py", line 776, in dictConfig
    dictConfigClass(config).configure()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/config.py", line 562, in configure
    'filter %r: %s' % (name, e))
ValueError: Unable to configure filter 'require_debug_false': Cannot resolve 'django.utils.log.RequireDebugFalse': No module named RequireDebugFalse

RequireDbugFalse是Django 1.4中的新功能(请参阅herehere),我想1.4中的其他一些基础魔法新功能在这个新安装中都无效。我想知道是否可以将我的应用程序迁移回Django 1.3 而不用执行django-admin.py startprojectdjango-admin.py startapp

2 个答案:

答案 0 :(得分:1)

你可以做到这一点,虽然你可能希望再次向前迈进。

我过去处理此问题的方法是,如果可能的话, not 对您的代码进行大量更改。相反,做你已经完成的事情 - 运行代码并等待它爆炸。确定问题的根源,然后执行以下操作之一:

  • 创建一个提供所需功能的存根(或者至少安静地不做任何事情),
  • 将功能反向移植到您自己的1.3或
  • 个人副本上
  • 将功能修补到未经修改的1.3上。 (我的推荐)

除非您完全了解1.4中的一些独特新功能,否则您会惊讶地发现您可以快速提出可用的环境。我有一个项目,猴子补丁文件只有大约100行,可以在旧版本上改进十几个功能。

答案 1 :(得分:0)

如果你没有在项目中使用django 1.4,你可以创建一个1.3项目并从那里复制日志设置。那你应该没事。