/ / Django Postgres DateRangeField - Чи можу я використовувати унікальний супутник - django, django-models

Django Postgres DateRangeField - чи можу я використовувати унікальний супутник - django, django-models

Я намагаюсь використовувати деякі з блискучих полів Postgres у Джанго.

Для системи бронювання ДатаRangeField виглядає ідеальним.
Чи можу я використовувати валідатори UNIQUE або навіть UNIQUE_DATE щодо цього поля?

Відмінна документація Джанго, на жаль, не розроблена щодо валідаторів та полів 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

Я сподіваюсь, що допомагає!