/ / Django Postgres DateRangeField - ユニークなvaildatorを使用できますか - django、django-models

Django Postgres DateRangeField - ユニークなvaildatorを使用できますか - django、django-models

私はDjangoで光沢のある新しいPostgresフィールドを使用しようとしています。

予約システムの場合、DateRangeFieldは完璧と思われます。
私は バリデーターユニーク あるいは UNIQUE_DATE この分野に関しては?

優れたDjangoのドキュメントは残念ながら、バリデータとPostgresのフィールドについては詳しく述べていません。

回答:

回答№1は1

基本的に私の知る限りでは、フィールドオプション ユニークな そして unique_for_date PostgresのDateRangeフィールドでは動作しません。

しかし、Porstgresインデックスを使用する方法があります 私たちには btree_gist Postgresの複合インデックス これはPostgresの拡張であり、Postgresで提供されています。

CREATE EXTENSION btree_gist;

いったんこれができれば、 別のフィールドと組み合わされたdate_rangeフィールドの制約 私たちのテーブルに。

ホテルの部屋番号(room_id)と予約の日付範囲(dt_range)があり、それらを組み合わせて一意にする必要があるとします。私たちの制約は

ALTER TABLE <yourtablename> ADD EXCLUDE USING gist ( room_id WITH =, dt_range WITH && );

今、予約の日付が矛盾してroom_idの予約があると、Postgresはエラーをスローします。

django.db.utils.IntegrityError

私はそれが助けて欲しい!