2019年12月にDjango3.0がリリースされました。
Django2系からの変更点とアップデート前に知っておきたい注意点を紹介します。
Djangoの勉強にはこちらの記事を参考に
Pythonバージョン間の互換性
Django3.0からは現状でPython 3.6、3.7、3.8のみをサポートします。
Python2のサポートが2020年で切れるということなのでPython2にはもちろん対応していません。
Python3.6以前を使用しているアプリケーションはPythonのバージョンアップが必要になります。
Python3.5から移行を考えている方は以下をどうぞ。

Django3.0の追加機能
ASGI(非同期Webサーバー)対応
本アップデートで一番の目玉だと個人的に思います。
今までは「WSGI」での同期サーバーとして処理ができていましたが、Django3.0からは非同期対応のWebサーバー「ASGI」で動作するようになりました。
ASGIは非同期処理に対応したWebアプリケーションを動作させるためのPython製のWebサーバーです。
しかし、ASGIで通信できるようになっているものの、非同期のviewやmiddlewareの作成はまだサポートしていないようです。
つまり、現状ではあまりASGIの恩恵を受けれない。。。
Django×ASGIのデプロイ方法は以下を参照
Maria DBのサポート
MariaDB(10.1以上)を公式にサポートするようになりました。
MariaDBを使う場合はDjangoの設定でMySQL用データベースバックエンドを選択してください。
PostgreSQL における排他制約
PostgreSQLの排他制約を作成するクラスExclusionConstraintが追加されました。
Meta.constraints オプションを用いてモデルに追加できます。
Filter expressions
BooleanFieldをfilterで使用する際
・3.0以前
annotateメソッドを経由する必要がある
・3.0
直接filterメソッドに使用できる
モデルフィールドで列挙型
TextChoices、IntegerChoices、ChoicesをField.choicesとして列挙型が使えるようになりました。
使い方は以下を参照
3.0から削除された機能
3.0から主に以下の機能が削除されました。
- django.db.backends.postgresql_psycopg2
- django.shortcuts.render_to_response()
- DEFAULT_CONTENT_TYPE
- HttpRequest.xreadlines()
- Field.from_db_value(),Expression.convert_value()
- QuerySet.earliest(),latest()
- django.utils.http.cookie_date()
- テンプレートタグのstaticfiles,admin_static
- django.contrib.staticfiles.templatetags.staticfiles.static()