Django2.0リリースノート
2017年12月2日
Django 2.0へようこそ!
これらのリリースノートには、の新機能と、Django1.11以前からアップグレードするときに注意が必要な後方互換性のない変更が含まれています。 非推奨サイクルの終わりに達したいくつかの機能を削除し、いくつかの機能の非推奨プロセスを開始しました。
このリリースでは、Djangoによる緩い形式のセマンティックバージョニングの使用が開始されますが、2.0リリースで予想されるような後方互換性のない大きな変更はありません。 アップグレードは、過去の機能リリースと同じくらいの労力である必要があります。
既存のプロジェクトを更新する場合は、 Djangoを新しいバージョンにアップグレードするガイドを参照してください。
Pythonの互換性
Django 2.0は、Python 3.4、3.5、3.6、および3.7をサポートしています。 強くお勧めします。各シリーズの最新リリースのみを公式にサポートします。
Django 1.11.xシリーズは、Python2.7をサポートする最後のシリーズです。
Django 2.0は、Python3.4をサポートする最後のリリースシリーズになります。 Django 2.0のサポート終了(2019年4月)を超えてPython 3.4のデプロイを計画している場合は、代わりにDjango 1.11 LTS(2020年4月までサポート)を使用してください。 ただし、Python3.4の保守終了は2019年3月であることに注意してください。
古いバージョンのDjangoに対するサードパーティライブラリのサポート
Django 2.0のリリース後、サードパーティのアプリ作成者は、1.11より前のすべてのバージョンのDjangoのサポートを終了することをお勧めします。 その時点で、python -Wd
を使用してパッケージのテストを実行できるはずです。これにより、非推奨の警告が表示されます。 非推奨の警告を修正した後、アプリはDjango2.0と互換性があるはずです。
Django2.0の新機能
簡略化されたURLルーティング構文
新しい django.urls.path()関数を使用すると、よりシンプルで読みやすいURLルーティング構文が可能になります。 たとえば、以前のDjangoリリースの次の例は次のとおりです。
次のように書くことができます:
新しい構文は、URLパラメーターの型強制をサポートします。 この例では、ビューはyear
キーワード引数を文字列ではなく整数として受け取ります。 また、書き直された例では、一致するURLの制約がわずかに少なくなっています。 たとえば、年の整数は正規表現の場合のように正確に4桁の長さに制限されていないため、10000年は一致するようになります。
以前のバージョンのdjango.conf.urls.url()
関数は、 django.urls.re_path()として利用できるようになりました。 古い場所は、差し迫った非推奨なしに、下位互換性のために残されています。 古いdjango.conf.urls.include()
関数がdjango.urls
からインポートできるようになったため、URLconfでfrom django.urls import include, path, re_path
を使用できます。
URLディスパッチャードキュメントは、新しい構文を特徴とし、詳細を提供するように書き直されています。
モバイル対応contrib.admin
管理者は応答性が高く、すべての主要なモバイルデバイスをサポートしています。 古いブラウザでは、さまざまなレベルの正常な劣化が発生する可能性があります。
マイナーな機能
django.contrib.admin
- 新しい ModelAdmin.autocomplete_fields 属性と ModelAdmin.get_autocomplete_fields()メソッドでは、
ForeignKey
とManyToManyField
の Select2 検索ウィジェットを使用できます。 ]。
django.contrib.auth
- PBKDF2パスワードハッシャーのデフォルトの反復回数が36,000から100,000に増加しました。
django.contrib.gis
- AsGeoJSON 関数、 GeoHash 関数、 IsValid 関数、:lookup: `isvalid` ルックアップ、およびのMySQLサポートが追加されました。距離ルックアップ。
- PostGISとSpatiaLiteでサポートされている Azimuth および LineLocatePoint 関数が追加されました。
- GeoJSONからインポートされた GEOSGeometry には、SRIDが設定されています。
- OSMWidget.default_zoom 属性を追加して、マップのデフォルトのズームレベルをカスタマイズしました。
- メタデータ、情報、およびメタデータ属性を使用して、ラスター上でメタデータを読み取りおよび編集できるようにしました。
papsz_options
を使用して、ドライバー固有の作成オプションを GDALRaster オブジェクトに渡すことができました。- GDALの内部仮想ファイルシステムに GDALRaster オブジェクトを作成できるようになりました。 ラスターは、メモリ内のバイナリデータから作成し、変換できるようになりました。
- 新しい GDALBand.color_interp()メソッドは、バンドの色の解釈を返します。
django.contrib.postgres
- ArrayAgg の新しい
distinct
引数は、連結された値が区別されるかどうかを決定します。 - 新しい RandomUUID データベース関数は、バージョン4のUUIDを返します。 新しい CryptoExtension 移行操作を使用してアクティブ化できるPostgreSQLの
pgcrypto
拡張機能を使用する必要があります。 - django.contrib.postgres.indexes.GinIndex は、
fastupdate
およびgin_pending_list_limit
パラメーターをサポートするようになりました。 - 新しい GistIndex クラスを使用すると、データベースに
GiST
インデックスを作成できます。 新しい BtreeGistExtension 移行操作は、btree_gist
拡張機能をインストールして、組み込みではないオペレータークラスのサポートを追加します。 - :djadmin: `inspectdb` は、
JSONField
およびさまざまなRangeField
をイントロスペクトできるようになりました(django.contrib.postgres
はINSTALLED_APPS
に含まれている必要があります)。
キャッシュ
cache.set_many()
は、挿入に失敗したキーのリストを返すようになりました。 組み込みのバックエンドの場合、挿入の失敗はmemcachedでのみ発生する可能性があります。
フォーム
- SplitDateTimeWidget および SplitHiddenDateTimeWidget の新しい
date_attrs
およびtime_attrs
引数により、DateInput
および [に異なるHTML属性を指定できます。 X183X](または非表示の)サブウィジェット。 - 新しい Form.errors.get_json_data()メソッドは、JSON応答に含めるのに適した辞書としてフォームエラーを返します。
管理コマンド
- :djadmin: `inspectdb` は、MySQLの符号なし整数列を
PositiveIntegerField
またはPositiveSmallIntegerField
に変換するようになりました。 - 新しい
makemessages --add-location
オプションは、POファイルのコメント形式を制御します。 - :djadmin: `loaddata` がstdin から読み取ることができるようになりました。
- 新しい
diffsettings --output
オプションを使用すると、出力を統一された差分形式でフォーマットできます。 - Oracleでは、列がID列として作成されている場合、:djadmin: `inspectdb` が
AutoField
をイントロスペクトできるようになりました。 - MySQLで、:djadmin: `dbshell` がクライアント側のTLS証明書をサポートするようになりました。
移行
- 新しい
squashmigrations --squashed-name
オプションを使用すると、押しつぶされた移行に名前を付けることができます。
モデル
- 新しい StrIndex データベース関数は、別の文字列内の文字列の開始インデックスを検索します。
- Oracleでは、
AutoField
とBigAutoField
が ID列として作成されるようになりました。 - QuerySet.iterator()の新しい
chunk_size
パラメーターは、データベースから結果をストリーミングするときにPythonデータベースクライアントによってフェッチされる行数を制御します。 サーバー側カーソルをサポートしないデータベースの場合、Djangoがデータベースアダプターからフェッチする結果の数を制御します。 - QuerySet.earliest()、 QuerySet.latest()、および Meta.get_latest_by で、複数のフィールドによる順序付けが可能になりました。
- ExtractQuarter 関数を追加して、 DateField および DateTimeField から四半期を抽出し、:lookup: `quarter` ルックアップで公開しました。
- TruncQuarter 関数を追加して、 DateField および DateTimeField を四半期の最初の日に切り捨てます。
- db_tablespace パラメーターをクラスベースのインデックスに追加しました。
- データベースがネイティブ期間フィールド(OracleおよびPostgreSQL)をサポートしている場合、 Extract は DurationField で機能するようになりました。
- PostgreSQLとOracleでサポートされている QuerySet.select_for_update()に
of
引数を追加して、選択したすべてのテーブルではなく、特定のテーブルの行のみをロックします。 select_for_update()を select_related()と組み合わせて使用すると、特に役立つ場合があります。 - QuerySet.in_bulk()の新しい
field_name
パラメーターを使用すると、任意の一意のモデルフィールドに基づいて結果をフェッチできます。 - CursorWrapper.callproc()は、バックエンドがこの機能をサポートしている場合、キーワードパラメーターのオプションの辞書を取得するようになりました。 Djangoの組み込みバックエンドのうち、Oracleのみがサポートしています。
- 新しい connection.execute_wrapper()メソッドを使用すると、データベースクエリの実行にラッパーをインストールできます。
- 組み込み集計の新しい
filter
引数を使用すると、同じフィールドまたはリレーションの複数の集計に異なる条件を追加できます。 - Meta.ordering の式のサポートが追加されました。
- QuerySet.values_list()の新しい
named
パラメーターを使用すると、名前付きタプルとして結果をフェッチできます。 - 新しい FilteredRelation クラスを使用すると、クエリセットに
ON
句を追加できます。
テンプレート
- サードパーティアプリでの Engine.get_default()の有用性を高めるために、
TEMPLATES
で複数のDjangoTemplates
エンジンが構成されている場合、[を上げるのではなく、最初のエンジンを返すようになりました。 X191X] 。 - カスタムテンプレートタグは、キーワードのみの引数を受け入れることができるようになりました。
テスト
- LiveServerTestCase にスレッドサポートを追加しました。
- Oracleのテストテーブルスペースパラメータのカスタマイズを可能にする設定を追加しました::setting: `DATAFILE_SIZE` 、:setting:` DATAFILE_TMP_SIZE` 、:setting: `DATAFILE_EXTSIZE` 、および:setting: `DATAFILE_TMP_EXTSIZE` 。
バリデーター
- 新しい ProhibitNullCharactersValidator は、 CharField フォームフィールドとそのサブクラスの入力でのヌル文字を禁止します。 脆弱性スキャンツールからヌル文字入力が観察されました。 ほとんどのデータベースはヌル文字をサイレントに破棄しますが、psycopg2 2.7以降では、PostgreSQLでヌル文字をchar / textフィールドに保存しようとすると例外が発生します。
2.0での後方互換性のない変更
一部の場所でバイト文字列のサポートを削除しました
ネイティブのPython2文字列をサポートするには、古いバージョンのDjangoはバイト文字列とUnicode文字列の両方を受け入れる必要がありました。 Python 2のサポートが廃止されたため、バイト文字列は入出力境界の周囲でのみ検出されるはずです(たとえば、バイナリフィールドやHTTPストリームの処理)。 Djangoは特定のコードパスでバイト文字列を受け入れなくなるため、コードを更新してバイト文字列の使用を最小限に抑える必要がある場合があります。 Pythonの-b
オプションは、コード内のその間違いを検出するのに役立つ場合があります。
たとえば、reverse()
は、force_text()
の代わりにstr()
を使用して、受信したargs
およびkwargs
を、 URL。 バイト文字列の場合、これにより、不要なb
プレフィックスと追加の引用符(str(b'foo')
は"b'foo'"
)を含む文字列が作成されます。 適応するには、バイト文字列をreverse()
に渡す前に、バイト文字列でdecode()
を呼び出します。
データベースバックエンドAPI
このセクションでは、サードパーティのデータベースバックエンドで必要になる可能性のある変更について説明します。
DatabaseOperations.datetime_cast_date_sql()
、datetime_cast_time_sql()
、datetime_trunc_sql()
、datetime_extract_sql()
、およびdate_interval_sql()
メソッドは、SQLとパラメータのリスト。- サードパーティのデータベースバックエンドは、バックエンドが動作するデータベースの名前とともに
DatabaseWrapper.display_name
属性を追加する必要があります。 Djangoは、システムチェックなど、さまざまなメッセージで使用する場合があります。 SchemaEditor._alter_column_type_sql()
の最初の引数は、table
ではなくmodel
になりました。SchemaEditor._create_index_name()
の最初の引数は、model
ではなくtable_name
になりました。FOR UPDATE OF
のサポートを有効にするには、DatabaseFeatures.has_select_for_update_of = True
を設定します。 データベースでOF
の引数をテーブルではなく列にする必要がある場合は、DatabaseFeatures.select_for_update_of_column = True
を設定します。- Window 式のサポートを有効にするには、
DatabaseFeatures.supports_over_clause
をTrue
に設定します。DatabaseOperations.window_start_rows_start_end()
および/またはwindow_start_range_start_end()
メソッドをカスタマイズする必要がある場合があります。 - サードパーティのデータベースバックエンドは、
max_length
の場合、CharField
の Cast 関数で使用されるデータベースデータ型のDatabaseOperations.cast_char_field_without_max_length
属性を追加する必要があります。引数は提供されていません。 DatabaseCreation._clone_test_db()
とget_test_db_clone_settings()
の最初の引数は、number
ではなくsuffix
になりました(一貫性を保つためにバックエンドの署名の名前を変更する場合)。django.test
も、これらの値を整数ではなく文字列として渡すようになりました。- サードパーティのデータベースバックエンドは、
BaseDatabaseIntrospection
のスタブに基づいてDatabaseIntrospection.get_sequences()
メソッドを追加する必要があります。
Oracle11.2のサポートを終了しました
Oracle11.2のアップストリームサポートの終了は12月です。 2020. Django 1.11は、ほぼこの日付に達する2020年4月までサポートされます。 Django 2.0は、Oracle12.1以降を公式にサポートしています。
デフォルトのMySQL分離レベルは読み取りコミット
MySQLのデフォルトの分離レベルである繰り返し可能な読み取りは、一般的なDjangoの使用法でデータ損失を引き起こす可能性があります。 これを防ぎ、他のデータベースとの一貫性を保つために、デフォルトの分離レベルが読み取りコミットされるようになりました。 必要に応じて、:setting: `DATABASES` 設定を使用して別の分離レベルを使用できます。
AbstractUser.last_name max_length increased to 150
django.contrib.auth.models.User.last_name の移行が含まれています。 AbstractUser
から継承するカスタムユーザーモデルがある場合は、ユーザーモデルのデータベース移行を生成して適用する必要があります。
姓の30文字の制限を保持する場合は、カスタムフォームを使用します。
ユーザーを編集するときに管理者でこの制限を維持したい場合は、次のフォームを使用するようにUserAdmin.form
を設定してください。
QuerySet.reverse()およびlast()はスライス後に禁止されています
スライスされたクエリセットでQuerySet.reverse()
またはlast()
を呼び出すと、並べ替え後にスライスが適用されるため、予期しない結果が発生します。 これは現在禁止されています。例:
フォームフィールドは、オプションの引数を位置引数として受け入れなくなりました
フォームフィールド引数の誤った順序によるランタイムエラーを防ぐために、組み込みフォームフィールドのオプションの引数は位置引数として受け入れられなくなりました。 例えば:
例外が発生するため、次のように置き換える必要があります。
call_command()は、受け取ったオプションを検証します
call_command()
は、呼び出されるコマンドの引数パーサーがcall_command()
に渡されるすべてのオプションを定義することを検証するようになりました。
parser.add_argument()
を使用して作成されていないオプションを使用するカスタム管理コマンドの場合、コマンドにstealth_options
属性を追加します。
インデックスは位置引数を受け入れなくなりました
例えば:
例外が発生するため、次のように置き換える必要があります。
SQLiteで外部キー制約が有効になりました
外部キー制約に違反している既存のモデルインスタンスを保存しようとすると、これは後方互換性のない変更(IntegrityError: FOREIGN KEY constraint failed
)として表示されます。
外部キーは、DEFERRABLE IMMEDIATE
ではなくDEFERRABLE INITIALLY DEFERRED
で作成されるようになりました。 したがって、特に次のようなパターンを使用している場合は、新しい定義で外部キーを再作成するためにテーブルを再構築する必要がある場合があります。
外部キーをDEFERRED
として再作成しない場合、外部キー制約が適用されるため、最初のcreate()
は失敗します。
最初にデータベースをバックアップしてください! Django 2.0にアップグレードした後、次のようなスクリプトを使用してテーブルを再構築できます。
このスクリプトは広範なテストを受けておらず、複数のデータベースなどのさまざまなケースに適応する必要があります。 気軽に改善に貢献してください。
さらに、SQLiteのテーブル変更の制限により、トランザクション内の他のモデルによって参照されるモデルまたはフィールドに対して RenameModel および RenameField 操作を実行することは禁止されています。 これらの操作を含む移行を適用できるようにするには、Migration.atomic
属性をFalse
に設定する必要があります。
その他
SessionAuthenticationMiddleware
クラスが削除されました。 Django 1.10ではセッション認証が無条件に有効になっているため、機能は提供されませんでした。デフォルトのHTTPエラーハンドラー(
handler404
など)は、点線のPythonパス文字列ではなく呼び出し可能になりました。 Djangoは、パフォーマンスとデバッグエクスペリエンスが向上するため、呼び出し可能な参照を優先します。[[Django/docs/2.2.x/ref/class-based-views/base#django.views.generic.base|]] は、
pattern_name
が存在しない場合に、NoReverseMatch
を無音にすることはなくなりました。:setting: `USE_L10N` がオフの場合、 FloatField および DecimalField は:setting:` DECIMAL_SEPARATOR` およびを尊重するようになりました:設定:検証中の `THOUSAND_SEPARATOR` 。 たとえば、次の設定を使用します。
"1.345"
の入力は、1.345
ではなく1345
に変換されるようになりました。AbstractBaseUser のサブクラスは、
get_short_name()
およびget_full_name()
を実装するために不要になりました。 (NotImplementedError
を発生させる基本実装は削除されます。)django.contrib.admin
は、実装されている場合はこれらのメソッドを使用しますが、必須ではありません。 これらの方法を使用するサードパーティのアプリは、同様のアプローチを採用することをお勧めします。FIRST_DAY_OF_WEEK
およびNUMBER_GROUPING
形式の設定は、JavaScriptおよびJSONi18nビュー出力で整数として保持されるようになりました。assertNumQueries()は、接続構成クエリを無視するようになりました。 以前は、テストで新しいデータベース接続が開かれた場合、それらのクエリは
assertNumQueries()
カウントの一部として含まれる可能性がありました。Oracleテスト表領域のデフォルトサイズが20Mから50Mに増加し、デフォルトの自動拡張サイズが10Mから25Mに増加しました。
データベースから大きな結果セットをストリーミングするときのパフォーマンスを向上させるために、 QuerySet.iterator()は一度に100行ではなく2000行をフェッチするようになりました。
chunk_size
パラメーターを使用すると、古い動作を復元できます。 例えば:JavaScriptCatalog ビューの
packages
引数に不明なパッケージ名を指定すると、サイレントに渡される代わりにValueError
が発生するようになりました。モデルインスタンスの主キーがデフォルトの
Model.__str__()
メソッドに表示されるようになりました。Question object (1)
。makemigrations
は、モデルフィールドlimit_choices_to
オプションへの変更を検出するようになりました。 これを既存の移行に追加するか、それを使用するフィールドに対して自動生成された移行を受け入れます。自動空間変換を必要とするクエリを実行すると、変換されていないジオメトリをサイレントに使用する代わりに、MySQLで
NotImplementedError
が発生するようになりました。django.core.exceptions.DjangoRuntimeWarning
が削除されました。 これは、CacheKeyWarning
のRuntimeWarning
の継承の中間クラスとしてキャッシュバックエンドでのみ使用されました。BaseExpression._output_field
の名前をoutput_field
に変更しました。 カスタム式の更新が必要になる場合があります。古いバージョンでは、フォームとフォームセットは、
Media
とウィジェットMedia
を連結して結合します。 結合は、各リストの要素の相対的な順序を維持しようとします。MediaOrderConflictWarning
は、注文を保持できない場合に発行されます。django.contrib.gis.gdal.OGRException
が削除されました。 Django 1.8以降、GDALException
のエイリアスになっています。GEOS3.3.xのサポートは終了しました。
GeometryField
のデータの選択方法が変更され、パフォーマンスが向上しました。生のSQLクエリでは、これらのフィールドをconnection.ops.select
でラップする必要があります。 例については、GISチュートリアルの Rawクエリノートを参照してください。
2.0で廃止された機能
Field.from_db_value()およびExpression.convert_value()のcontext引数
Field.from_db_value()
およびExpression.convert_value()
のcontext
引数は、常に空の辞書であるため、使用されません。 両方のメソッドのシグネチャは次のとおりです。
それ以外の:
カスタムフィールドと式での古い署名のサポートは、Django3.0まで残ります。
その他
django.db.backends.postgresql_psycopg2
モジュールは非推奨になり、django.db.backends.postgresql
が優先されます。 これは、Django1.9以降のエイリアスです。 これは、モジュールから直接インポートするコードにのみ影響します。DATABASES
設定でも'django.db.backends.postgresql_psycopg2'
を使用できますが、Django1.9で追加された'django.db.backends.postgresql'
名を使用して簡略化できます。django.shortcuts.render_to_response()
は非推奨になり、 django.shortcuts.render()が優先されます。render()
は、request
も必要とすることを除いて、同じ引数を取ります。DEFAULT_CONTENT_TYPE
設定は非推奨になりました。 HTML5がほとんどXHTMLに取って代わったため、サードパーティのアプリとうまく相互作用せず、廃止されました。HttpRequest.xreadlines()
は非推奨になり、リクエストを反復処理することになりました。- QuerySet.earliest()および QuerySet.latest()への
field_name
キーワード引数は、フィールド名を引数として渡すために非推奨になりました。.earliest(field_name='pub_date')
の代わりに.earliest('pub_date')
と書いてください。
2.0で削除された機能
これらの機能は非推奨サイクルの終わりに達し、Django2.0で削除されました。
これらの機能の使用を削除する方法など、これらの変更の詳細については、1.9 で非推奨となった機能を参照してください。
django.dispatch.signals.Signal.disconnect()
のweak
引数が削除されました。django.db.backends.base.BaseDatabaseOperations.check_aggregate_support()
が削除されました。django.forms.extras
パッケージが削除されました。assignment_tag
ヘルパーが削除されました。SimpleTestCase.assertsRedirects()
のhost
引数が削除されました。 パスが同一である場合に絶対URLが相対URLと等しいと見なされるようにする互換性レイヤーも削除されます。Field.rel
とField.remote_field.to
が削除されます。ForeignKey
およびOneToOneField
のon_delete
引数は、モデルおよび移行で必要になりました。 更新する移行の数が少なくなるように、移行を縮小することを検討してください。django.db.models.fields.add_lazy_relation()
が削除されました。- タイムゾーンのサポートが有効になっている場合、タイムゾーンをサポートしないデータベースバックエンドは、ORMの外部で実行されるSQLクエリにパラメータとして渡されるときに、認識された日時をUTCのナイーブな値に変換しなくなります。
cursor.execute()
で。 django.contrib.auth.tests.utils.skipIfCustomUser()
が削除されました。GeoManager
およびGeoQuerySet
クラスが削除されました。django.contrib.gis.geoip
モジュールが削除されました。- テンプレートローダーの
supports_recursion
チェックは以下から削除されました。django.template.engine.Engine.find_template()
django.template.loader_tags.ExtendsNode.find_template()
django.template.loaders.base.Loader.supports_recursion()
django.template.loaders.cached.Loader.supports_recursion()
load_template
およびload_template_sources
テンプレートローダーメソッドが削除されました。- テンプレートローダーの
template_dirs
引数が削除されました。django.template.loaders.base.Loader.get_template()
django.template.loaders.cached.Loader.cache_key()
django.template.loaders.cached.Loader.get_template()
django.template.loaders.cached.Loader.get_template_sources()
django.template.loaders.filesystem.Loader.get_template_sources()
django.template.loaders.base.Loader.__call__()
が削除されました。exception
パラメーターを受け入れないカスタムエラービューのサポートが削除されました。django.utils.feedgenerator.Atom1Feed
およびdjango.utils.feedgenerator.RssFeed
のmime_type
属性が削除されました。include()
のapp_name
引数が削除されました。include()
への最初の引数として3タプル(admin.site.urls
を含む)を渡すためのサポートが削除されました。- アプリケーション名前空間なしでURLインスタンス名前空間を設定するためのサポートが削除されました。
Field._get_val_from_obj()
が削除されました。django.template.loaders.eggs.Loader
が削除されました。contrib.auth
関数ベースのビューのcurrent_app
パラメーターが削除されました。SimpleTestCase.assertRaisesMessage()
へのcallable_obj
キーワード引数が削除されました。ModelAdmin
メソッドのallow_tags
属性のサポートが削除されました。SyndicationFeed.add_item()
へのenclosure
キーワード引数が削除されました。django.template.base.Origin
のdjango.template.loader.LoaderOrigin
およびdjango.template.base.StringOrigin
エイリアスが削除されました。
これらの変更の詳細については、 1.10 で非推奨となった機能を参照してください。
makemigrations --exit
オプションが削除されました。- 逆外部キーまたは多対多関係への直接割り当てのサポートが削除されました。
django.contrib.gis.geos.GEOSGeometry
のget_srid()
およびset_srid()
メソッドが削除されました。django.contrib.gis.geos.Point
のget_x()
、set_x()
、get_y()
、set_y()
、get_z()
、およびset_z()
メソッド]が削除されます。django.contrib.gis.geos.Point
のget_coords()
およびset_coords()
メソッドが削除されました。django.contrib.gis.geos.MultiPolygon
のcascaded_union
プロパティが削除されました。django.utils.functional.allow_lazy()
が削除されました。shell --plain
オプションが削除されました。django.core.urlresolvers
モジュールが削除され、新しい場所django.urls
が優先されます。CommaSeparatedIntegerField
は、過去の移行でのサポートを除いて、削除されました。- テンプレート
Context.has_key()
メソッドが削除されました。 django.core.files.storage.Storage.accessed_time()
、created_time()
、およびmodified_time()
メソッドのサポートが削除されました。Meta.default_related_name
が設定されている場合のモデル名を使用したクエリルックアップのサポートが削除されました。- MySQL
__search
ルックアップが削除されました。 _apply_rel_filters()
メソッドなしでカスタム関連のマネージャークラスをサポートするためのシムが削除されました。- プロパティではなくメソッドとして
User.is_authenticated()
およびUser.is_anonymous()
を使用することはサポートされなくなりました。 Model._meta.virtual_fields
属性が削除されます。Field.contribute_to_class()
のキーワード引数virtual_only
およびModel._meta.add_field()
のvirtual
が削除されました。javascript_catalog()
およびjson_catalog()
ビューが削除されます。django.contrib.gis.utils.precision_wkt()
が削除されました。- マルチテーブル継承では、
OneToOneField
からparent_link
への暗黙的な昇格が削除されます。 Widget._format_value()
のサポートは削除されました。FileField
メソッドget_directory_name()
およびget_filename()
は削除されました。mark_for_escaping()
関数とそれが使用するクラス:EscapeData
、EscapeBytes
、EscapeText
、EscapeString
、およびEscapeUnicode
はNS。escape
フィルターはdjango.utils.html.conditional_escape()
を使用するようになりました。Manager.use_for_related_fields
が削除されました。- モデル
Manager
の継承は、MRO継承ルールに従います。Meta.manager_inheritance_from_future
を使用して動作にオプトインする必要がなくなりました。 settings.MIDDLEWARE_CLASSES
を使用した古いスタイルのミドルウェアのサポートは削除されました。