/ / Django Postgres DateRangeField - môžem použiť UNIQUE vaildator - django, django-models

Django Postgres DateRangeField - môžem použiť UNIQUE vaildator - django, django-models

Snažím sa používať niektoré z lesklých nových polí Postgres v Django.

Pre rezervačný systém sa zdá, že DateRangeField je perfektný.
Môžem použiť validátory UNIQUE alebo dokonca UNIQUE_DATE v tejto oblasti?

Vynikajúca dokumentácia Django bohužiaľ nevypracováva validátory a polia Postgres.

odpovede:

1 pre odpoveď č. 1

Takže v podstate, podľa môjho vedomia, možnosť voľby jedinečný a unique_for_date nepracujte s poliami Postgres DateRange.

Existuje však spôsob používania indexu Porstgres Potrebujeme btree_gist kombinovaný index v Postgrese. Toto je rozšírenie Postgres a je dodávané s Postgresom, stačí ho nainštalovať do databázy

CREATE EXTENSION btree_gist;

Akonáhle to máme, môžeme mať obmedziť na pole date_range spolu s iným poľom v našej tabuľke.

Povedzme, že máme číslo hotelovej izby (room_id) a rozsah dátumu rezervácie (dt_range), ktorý by mal byť v kombinácii jedinečný. Naše obmedzenie by bolo

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

Teraz, keď máme rezerváciu izby room_id s konfliktnými dátumami rezervácie, Postgres hodí chybu, ktorá je a

django.db.utils.IntegrityError

Dúfam, že to pomôže!