2012-12-21 35 views
2

有時候,我的愚蠢,輕率魯莽編程的直覺讓我有些危險的地方:向後從Django的1.4移植到Django的1.3

我已經開始一個Django 1.4應用與sqlite3的,然後轉移到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 

RequireDebugFalse是在Django 1.4新(見herehere)和我猜想1.4中的其他一些新的基礎魔法在這個新安裝中不起作用。我想知道是否可以將我的應用程序遷移回Django 1.3 而不需要django-admin.py startprojectdjango-admin.py startapp

+0

+1爲你的「愚蠢,魯莽和膽大妄爲的編程腸」 – mjhm

+0

你不覺得你有時住在邊緣嗎? :P – marcoslhc

回答

1

你可以這樣做,儘管你可能想打開一扇門繼續前進。

我過去處理這個問題的方式是,如果可能的話,而不是請對您的代碼進行大量更改。相反,做你已經做的事 - 運行代碼並等待它炸燬。找出什麼問題的來源,然後執行下列操作之一:

  • 創建提供所需的功能存根(或至少靜靜地什麼都不做),
  • 回端口的功能添加到自己的1.3的個人副本,或
  • 將未修改的1.3版本的功能添加到Monkey。 (我的推薦)

除非你完全gl onto 1.4中的一些獨特的新功能,否則你會驚訝地發現你可以多快創建一個可用的環境。我有一個項目,其中猴子補丁文件只有大約100行,用於將舊版本的十幾個功能進行翻新。

+0

好的。首先嚐試使用「較舊的」'manage.py'。 – marcoslhc

+0

較舊的manage.py不會執行任何操作。一旦我評論了settings.py文件的'LOGGING'部分,第一個問題就消失了。然後,我必須重寫一些代碼,以擺脫1.3中不支持的django.timezone到目前爲止一切正常。 – marcoslhc

0

如果你沒有在項目中使用django 1.4的東西,你可以創建一個1.3項目並從那裏複製日誌設置。那你應該沒問題。

+0

我想保持我的git repo完好無損,並在一個新的分支中工作,其他明智的聽起來像一個非常實用和簡單的答案 – marcoslhc