2014-11-05 198 views
4

我有一個現有的Django項目版本1.5,現在我已經升級到新的Django 1.7Django從1.5版本遷移到1.7

我主要關心的是遷移。

我採取了以下步驟將我的項目轉換爲Django 1.7。

  1. 移動的舊南遷移到south_migrations文件夾
  2. 刪除 「南」,從安裝的應用程序
  3. ./manage.py makemigrations
  4. ./manage.py migrate

這是正確的做法?

我有另一個問題。當我運行./manage.py runserver它給出了這樣的警告:

提示:Django 1.6將BooleanField的默認值從False更改爲None。有關更多信息,請參閱 https://docs.djangoproject.com/en/1.6/ref/models/fields/#booleanfield。 sqls.Sql.updates:(1_6.W002)BooleanField沒有默認值。

我該如何解決這個問題?我只需輸入BooleanField的默認值,然後運行makemigrationsmigrate。這足夠了還是我需要做更多的事情?

回答

3

我主要關心的是移植。這是正確的方法嗎?

是的。如果您的所有部署都是最新的(也就是說,沒有南遷移沒有應用),那麼您可以簡單地刪除南遷移並從INSTALLED_APPS中刪除南遷。從Django的角度來看,你正在服用的現有應用並將其轉變成使用遷移,一個簡單的情況下,the documentation描述:

如果您的應用程序已經有模型和數據庫表,並且沒有遷移,但(例如,您是根據以前的Django版本創建的),您需要將其轉換爲使用遷移;這是一個簡單的過程:

$蟒蛇manage.py makemigrations your_app_label

這將使您的應用程序新的初始遷移。現在,當您運行遷移時,Django會檢測到您有初始遷移,並且它想創建的表已經存在,並將遷移標記爲已應用。

如何解決這些BooleanField警告?

(請注意,此警告不再作爲Django的1.8。)

這些警告是指在Django一個向後兼容的變化是可能影響你。但它可能不會。如果你的代碼沒有指定BooleanField的默認值,但它仍然會使用默認值False。您應該查看所有應用中的所有BooleanFields,然後決定是否有這種情況。

如果不是,您可以使用SILENCED_SYSTEM_CHECKS設置簡單地使警告消失。

如果你的代碼不依賴於這個隱含的默認值,然後,轉換應用使用遷移,你應該添加default=False明確並創建一個遷移。 (當然,無論如何你都可以這麼做,但最好不要定義一個默認值,如果你實際上不需要使用它的話)。

+0

這個檢查已經在開發分支中刪除了:https:// code.djangoproject.com/ticket/23765。 – 2015-03-23 08:48:30