3.0後方互換性のない変更
データベースバックエンドAPI
このセクションでは、必要とされ得るサードパーティのデータベース・バックエンドへの変更を記載しています。
- 今、2番目のパラメータは、
DatabaseIntrospection.get_geometry_type()
行の説明ではなく、列名があります。 DatabaseIntrospection.get_field_type()
あなたは、もはやタプルを返さないことがあります。- データベースが同じSQL文で外部キーフィールドを作成するために添加することができる場合は、追加
SchemaEditor.sql_create_column_inline_fk
適切なSQLを、そうでない場合は、追加適切なSQLを。それ以外の場合は、設定されています。DatabaseFeatures.can_create_inline_fk = False
DatabaseFeatures.can_return_id_from_insert
そして、can_return_ids_from_bulk_insert
それが改名されたcan_return_columns_from_insert
とcan_return_rows_from_bulk_insert
。- 今、データベース機能を処理することができる使用して例示的フォーマットが作成される(例えば、 出力)。で実施、などの準備時間、 サードパーティのバックエンドは、このフォーマットを処理する必要があります 。
datetime.timezone
datetime.timedelta
timezone(timedelta(hours=5))
'UTC+05:00'
DateTimeField
datetime_cast_date_sql()
datetime_extract_sql()
- エントリは
AutoField
、BigAutoField
およびSmallAutoField
に追加されDatabaseOperations.integer_field_ranges
たフィールドのこれらの種類についての範囲のサポートされている認証整数。サードパーティのバックエンドは、デフォルトエントリをカスタマイズする必要があるかもしれません。 DatabaseOperations.fetch_returned_insert_id()
交換し、fetch_returned_insert_columns()
それが返すステートメント返された値のリストではなく単一の値以上で、。INSERT … RETURNING
DatabaseOperations.return_insert_id()
置き換えreturn_insert_columns()
受け入れfields
パラメータエントリ内のパラメータのは、反復フィールドを返すように挿入されています。一般的に、これは自動的に主キーが生成されます。
django.contrib.admin
- モデルの履歴管理者はメッセージを変更するより読みフィールドラベルの代わりに、フィールド名を使用する傾向があります。
django.contrib.gis
- 長いサポートするのPostGIS 2.1はありません。
- SpatiaLite 4.1および4.2のためのサポートが削除されました。
- GDAL 1.11とGEOS 3.4のためのサポートが削除されました。
もはやPostgreSQLのサポートされていません 9.4
PostgreSQLの9.4のための上流のサポートは2019年12月に終了します。Django3.0のサポートはPostgreSQL 9.5以降。
サポートされなくなりましオラクル 12.1
オラクル12.1の上流には、2021年7月に終了します。Django2.2は常に2022年4月にサポートします。Django3.0は公式のOracle 12.2および18cをサポートしています。
専用のPython 2互換削除するAPIを
ジャンゴ2.0でPythonの2のためのサポートが削除さにもかかわらず、しかし、Djangoの特定の独自のAPIからは削除されませんでしたので、サードパーティ製のアプリケーションは、これまでのPython 2の使用が終了するまで、それらを使用し続けることができます。
我々は今、これらのAPIを削除しているので、Pythonの2との互換性を削減しますDjangoの3.0のサポートを追加するときに使用したいので。
django.test.utils.str_prefix()
文字列は-Python 3「U」プレフィックスではありません。django.test.utils.patch_logger()
- 使用。unittest.TestCase.assertLogs()
django.utils.lru_cache.lru_cache()
-別名 。functools.lru_cache()
django.utils.decorators.available_attrs()
-この関数が返しますfunctools.WRAPPER_ASSIGNMENTS
。django.utils.decorators.ContextDecorator
-別名 。contextlib.ContextDecorator
django.utils._os.abspathu()
-別名。os.path.abspath()
django.utils._os.upath()
そしてnpath()
-これらの関数は、Python 3上では動作しません。django.utils.six
-へのDELETEを使用し、このベンダー・ライブラリーまたはスイッチ 6。django.utils.encoding.python_2_unicode_compatible()
-別名six.python_2_unicode_compatible()
。django.utils.functional.curry()
-使用か 。参照してください5b1c389603a353625ae1603を。functools.partial()
functools.partialmethod
django.utils.safestring.SafeBytes
- ジャンゴ2.0から出発して使用されていません。
新しいデフォルトのためのFILE_UPLOAD_PERMISSIONS
設定
古いバージョンでは、デフォルトで設定されています 。デフォルト値使用アップロードされたファイルは、そのサイズとアップロード・ハンドラ用途に応じて、異なる権利を持っている原因となります、。FILE_UPLOAD_PERMISSIONS
None
FILE_UPLOAD_HANDLERS
FILE_UPLOAD_PERMISSION
今、デフォルトに0o644
、この矛盾を避けます。
新しいデフォルトのセキュリティ設定
より安全なデフォルトのDjangoプロジェクトにするために、いくつかのセキュリティ設定は今より安全なデフォルトを持っています。
X_FRAME_OPTIONS
デフォルトで'DENY'
。SECURE_CONTENT_TYPE_NOSNIFF
デフォルトでTrue
。
これらの変更の詳細については、を参照してください上記の「新しい セキュリティ」セクション。
雑多
ContentType.__str__()
今のモデルが含まれapp_label
、異なるアプリケーションの中に同じ名前で取り除くことができるのモデル曖昧。- クッキー内のセッションで不承認の代わりの言語にアクセスするので、その償却は、セッション中に、もはや後に
LocaleMiddleware
、ユーザーの言語を見つけるために、言語はもはや予約されたセッションではありません。django.contrib.auth.logout()
django.utils.html.escape()
今のためのHTMLをエスケープ。この変換の代わりに、以前の10進コード。html.escape()
'
'
'
- このオプションは、今のように働くのではなくショートカットとして、オプション。
django-admin test -k
unittest -k
--keepdb
pywatchman
<1.2.0 サポートが削除されました。urlencode()
それは、今whenerのためにエンコードすることができdoseq=False
、それ標準ライブラリなって、むしろその反復よりも、一貫性のある機能。urllib.parse.urlencode()
intword
テンプレートフィルタは現在、変換され1.0
、他のすべての値が複数形に、単数形のフレーズに。いくつかの言語では、これは正しくない可能性があります。- さて、値がモデルに割り当てられているか、 未設定のフィールドを対応する属性。このフィールドにアクセスした後、クエリにつながります。
ForeignKey
OneToOneField
'_id'
patch_vary_headers()
今'*'
によるRFC 7231-#セクション7.1.4ヘッダーフィールド名のリストにアスタリスクが含まれている場合で、、、Vary
ヘッダは、単一のアスタリスクで構成されます'*'
。- MySQLの8.0.16+では、
PositiveIntegerField
とPositiveSmallIntegerField
今でデータベースに負の値を防ぐために、チェック制約が含まれています。 alias=None
これは、署名に追加されました 。Expression.get_group_by_cols()
sqlparse
<の0.2.2 サポートが削除されました。