DjangoにはAPIの安定についてのポリシーがあります。基本的にはDjango1.0向けに開発したコードはDjango1.1になっても変更無しに動きます。 が、バグの改修でどうしても後方互換性が失われる事があります。Django1.0とDjango1.1の間にはほんの少しの違いがあります。
Django1.1にバージョンをあげる前に、下記の変更があなたのコードに影響がないかダブルチェックしてください。もし、影響があるようでしたらコードを修正してください。
制約名が変更されました
Django1.1では、マシンのワードサイズに影響されずに名前を生成するために、データベースの制約名を生成するメソッドを変更しました。この変更は後方互換性を失っている可能性があります。
32bitのプラットフォームを使っている場合には違いに気づかないでしょう。
64bitのプラットフォームを使っている場合には management コマンドの reset で問題があるかもしれません。この変更の前は64bitプラットフォームでは16文字の digest を制約名に使っていました。
ALTER TABLE myapp_sometable ADD CONSTRAINT object_id_refs_id_5e8f10c132091d1e FOREIGN KEY ...
この変更の後では、プラットフォームに関わらず8文字の digest を制約名に使います。
ALTER TABLE myapp_sometable ADD CONSTRAINT object_id_refs_id_32091d1e FOREIGN KEY ...
このため、64bitマシンで生成したテーブルに対して management コマンドの reset を実行できない可能性があります。昔生成した制約名が新しく生成される名前にマッチせず、誤ったSQLが生成されるためです。
64bitで制約が生成されたアプリケーションを reset したい場合には、事前に古い制約を手動で破棄(drop)してからにしてください。
テストケースがトランザクション内で実行されるようになりました
Django1.1では、より良いパフォーマンスがでるよう、トランザクション内でテストが実行されるようになりました。
既存のテストが、トランザクションの振る舞いをテストする必要がある場合、テスト環境について誤った前提に依存している場合、テストケースに特定の順番が必要な場合には後方互換性を失っています。
このような場合には、TransactionTestCaseを代わりに使えます。単に新しいロールバックのアプローチでテストケースのエラーを明らかにするだけです。長いテストは正しく書き直さねばなりません。
SetRemoteAddrFromForwardedFor ミドルウェアを削除しました
Django1.0には便利のために django.middleware.http.SetRemoteAddrFromForwardedFor を同梱していました。このミドルウェアはProxyの設定により付与される X-Forwarded-For HTTPヘッダを使って、 REMOTE_ADDR ヘッダを上書きするものでした。
実際の用途としては信頼性に欠ける仕組みで、たとえドキュメントに書かれていたとしても、Djangoに含まれていることでアプリケーション開発者たちに認証ソースとしてREMOTE_ADDRの値が安全だと思い込ませてしまうことになります。
直接セキュリティの問題ではありませんが、Django1.1のリリースでこのミドルウェアを削除する事に決めました。DeprecationWorningを出力する以外は何もしないクラスに差し替えてあります。
もし、このミドルウェアに依存してしまっている場合には次のようにアップグレードしてください
アップロードされたファイルの名前はあとからわかります
Django1.0ではモデルがデータベースに保存される前にディスクに保存されていました。実際のファイル名はデータベースの保存前にわかっ低迷したので、モデルの pre-save シグナルハンドラで参照可能でした。
Django1.1では、データベースへモデルの保存する際にファイルを保存します。モデルが保存されるまで実際の名前が信頼できません(確定しません)。
モデルformsetsの保存が変わりました。
Django1.1ではBaseModelFormSetがModelForm.save()を呼び出すようになりました。
モデルのformsetsを__init__で変更している場合や、内部的な_total_form_countや_initial_formsetアトリビュートに依存している場合には後方互換性を失っています。これらのアトリビュートはパブリックメソッドに変更されました。
joinフィルターのエスケープが修正されました
joinフィルターが接続文字列をエスケープしてしまうことがなくなりました。
接続文字列をエスケープしてしまう特殊な状況においては後方互換性を失っています。 {{ foo|join:"&" }} と書いていた場合には、 {{ foo|join:"&" }} に書き換えてください。
以前の振る舞いはバグで、ドキュメントに書かれていたこととは正反対でした。
redirect_to汎用ビューにpermanent redirects引数を追加しました
Django1.1では django.views.generic.simple.redirect_to() 汎用ビューに permanent という引数が追加になりました。もし、redirect_toにpermanentという引数を渡してしまっていた場合には、後方互換性が失われています。