... れます。 組み込みの制約への参照について 制約は django.db.models.constraints で定義されていますが、利便性のために django.db.models にインポートされて ... います。標準的な規約は from django.db import models を使い、制約を models.<Foo>Constraint と呼ぶことです。 抽象基底クラスにおける制約 制約には常にユニークな名前を指定する必要があります。ま ... た、通常は抽象基底クラスで制約を指定することはできません。なぜなら Meta.constraints オプションはサブクラスに継承され、そのたびに( name を含む)属性がまっ ... ... れます。 組み込みの制約への参照について 制約は django.db.models.constraints で定義されていますが、利便性のために django.db.models にインポートされて ... います。標準的な規約は from django.db import models を使い、制約を models.<Foo>Constraint と呼ぶことです。 抽象基底クラスにおける制約 制約には常にユニークな名前を指定する必要があります。ま ... た、通常は抽象基底クラスで制約を指定することはできません。なぜなら Meta.constraints オプションはサブクラスに継承され、そのたびに( name を含む)属性がまっ ... ... able = None , include = None , violation_error_code = None , violation_error_message = None ) [ソース] ¶ データベースに排他制約を作成します。内部的には、PostgreSQLはインデックスを使用して排他制約を実装しています。デフォルトのインデックス型は GiST です ... 既存の行と競合する新しい行を挿入しようとすると、 IntegrityError が発生します。更新が既存の行と競合する場合も同様です。 排他制約は モデル バリデーション の間にチェックされます。 name ¶ ExclusionConstraint. name ¶ BaseConstraint.name を参照。 expression ... たとえば: expressions = [ ( "timespan" , RangeOperators . ADJACENT_TO ), ( F ( "room" ), RangeOperators . EQUAL ), ] 演算子の制約 排他制約には可換演算子のみ使用できます。 OpClass() 式は、制約式のカスタム operator class を指定するために使用できます。たと ... ... able = None , include = None , violation_error_code = None , violation_error_message = None ) [ソース] ¶ データベースに排他制約を作成します。内部的には、PostgreSQLはインデックスを使用して排他制約を実装しています。デフォルトのインデックス型は GiST です ... 既存の行と競合する新しい行を挿入しようとすると、 IntegrityError が発生します。更新が既存の行と競合する場合も同様です。 排他制約は モデル バリデーション の間にチェックされます。 name ¶ ExclusionConstraint. name ¶ BaseConstraint.name を参照。 expression ... たとえば: expressions = [ ( "timespan" , RangeOperators . ADJACENT_TO ), ( F ( "room" ), RangeOperators . EQUAL ), ] 演算子の制約 排他制約には可換演算子のみ使用できます。 OpClass() 式は、制約式のカスタム operator class を指定するために使用できます。たと ... ... chema_editor () as schema_editor : schema_editor . delete_model ( MyModel ) これは、トランザクションや遅延SQL ( ForeignKey 制約の作成など) のようなものを管理することを可能にするため、コンテキストマネージャを通して使用されなければなりません。 すべての可 ... 用したい順序で呼び出すべきです。一部の操作や変更の種類は、すべてのデータベースで可能ではありません。例えば、MyISAM は外部キー制約をサポートしていません。 Django のマイグレーション機能を使うためには、サードパーティ製のデータベースバックエンドを書いたり保 ... tor. create_model ( model ) [ソース] ¶ 提供されたモデルのために、データベースに新しいテーブルを作成し、必要に応じてユニーク制約やインデックスも作成します。 delete_model() ¶ BaseDatabaseSchemaEditor. delete_model ( model ) [ソース] ¶ モデルのテーブルを ... ... chema_editor () as schema_editor : schema_editor . delete_model ( MyModel ) これは、トランザクションや遅延SQL ( ForeignKey 制約の作成など) のようなものを管理することを可能にするため、コンテキストマネージャを通して使用されなければなりません。 すべての可 ... 用したい順序で呼び出すべきです。一部の操作や変更の種類は、すべてのデータベースで可能ではありません。例えば、MyISAM は外部キー制約をサポートしていません。 Django のマイグレーション機能を使うためには、サードパーティ製のデータベースバックエンドを書いたり保 ... tor. create_model ( model ) [ソース] ¶ 提供されたモデルのために、データベースに新しいテーブルを作成し、必要に応じてユニーク制約やインデックスも作成します。 delete_model() ¶ BaseDatabaseSchemaEditor. delete_model ( model ) [ソース] ¶ モデルのテーブルを ... ... オプションはトランザクション内でサポートされていません (詳細は non-atomic migration を参照してください)。 検証を強制しない制約を追加する ¶ PostgreSQL は NOT VALID オプションを ADD CONSTRAINT 文でサポートしており、既存の行の検証を行わずに検査制約を追加 ... できます。このオプションは、既存のすべての行が制約を満たすかどうかを確認するためにテーブルをスキャンする手間を省きたい場合に便利です。 NOT VALID オプションで作成されたチェック ... ください。 class AddConstraintNotValid ( model_name , constraint ) [ソース] ¶ AddConstraint に似ていますが、既存の行に対して制約を検証しないものです。 class ValidateConstraint ( model_name , name ) [ソース] ¶ テーブルをスキャンし、既存の行にある指定のチ ... ... オプションはトランザクション内でサポートされていません (詳細は non-atomic migration を参照してください)。 検証を強制しない制約を追加する ¶ PostgreSQL は NOT VALID オプションを ADD CONSTRAINT 文でサポートしており、既存の行の検証を行わずに検査制約を追加 ... できます。このオプションは、既存のすべての行が制約を満たすかどうかを確認するためにテーブルをスキャンする手間を省きたい場合に便利です。 NOT VALID オプションで作成されたチェック ... ください。 class AddConstraintNotValid ( model_name , constraint ) [ソース] ¶ AddConstraint に似ていますが、既存の行に対して制約を検証しないものです。 class ValidateConstraint ( model_name , name ) [ソース] ¶ テーブルをスキャンし、既存の行にある指定のチ ... ... ト値は 90 です。 OpClass() 式 ¶ class OpClass ( expression , name ) [ソース] ¶ OpClass() 式は、機能インデックス、機能ユニーク制約、または除外制約を定義するために使用できるカスタム operator class と一緒に表す expression を表します。これを使用するには、 I ... ext_pattern_ops" ), name = "upper_description_unique" , ) Upper('description') を使って text_pattern_ops を使用してユニーク制約を作成します: ExclusionConstraint ( name = "exclude_overlapping_ops" , expressions = [ ( OpClass ( "circle" , name = "circle ... _ops" ), RangeOperators . OVERLAPS ), ], ) これは circle_ops を使用して circle 上に排他制約を作成します。 目次 PostgreSQL 固有のモデルインデックス BloomIndex BrinIndex BTreeIndex GinIndex GistIndex HashIndex SpGistI ... ... ト値は 90 です。 OpClass() 式 ¶ class OpClass ( expression , name ) [ソース] ¶ OpClass() 式は、機能インデックス、機能ユニーク制約、または除外制約を定義するために使用できるカスタム operator class と一緒に表す expression を表します。これを使用するには、 I ... ext_pattern_ops" ), name = "upper_description_unique" , ) Upper('description') を使って text_pattern_ops を使用してユニーク制約を作成します: ExclusionConstraint ( name = "exclude_overlapping_ops" , expressions = [ ( OpClass ( "circle" , name = "circle ... _ops" ), RangeOperators . OVERLAPS ), ], ) これは circle_ops を使用して circle 上に排他制約を作成します。 目次 PostgreSQL 固有のモデルインデックス BloomIndex BrinIndex BTreeIndex GinIndex GistIndex HashIndex SpGistI ... 2026年10月08日