/ / Django Postgres DateRangeField - क्या मैं अद्वितीय वाइल्डेटर का उपयोग कर सकता हूं - django, django-models

Django Postgres DateRangeField - क्या मैं अद्वितीय वाइल्डेटर का उपयोग कर सकता हूं - django, django-models

मैं Django में कुछ चमकदार नए Postgres क्षेत्रों का उपयोग करने की कोशिश कर रहा हूँ।

बुकिंग सिस्टम के लिए डेटरेंजफिल्ड सही लगता है।
क्या मैं इसका उपयोग कर सकता हूँ वैधकर्ता अद्वितीय या और भी UNIQUE_DATE इस क्षेत्र के संबंध में?

दुर्भाग्यवश, उत्कृष्ट Django दस्तावेज मान्यताओं और पोस्टग्रेज़ फ़ील्ड के बारे में विस्तार से नहीं है।

उत्तर:

उत्तर № 1 के लिए 1

तो मूल रूप से, मेरे ज्ञान के लिए, क्षेत्र विकल्प अद्वितीय तथा unique_for_date Postgres DateRange फ़ील्ड के साथ काम न करें।

हालांकि, पोर्स्ट्रेस इंडेक्स का उपयोग करने का एक तरीका है हमे जरूरत है btree_gist पोस्टग्रेज़ में संयुक्त सूचकांक। यह एक पोस्टग्रेस एक्सटेंशन है और इसे पोस्टग्रेज़ के साथ प्रदान किया जाता है, हमें बस इसे डेटाबेस में स्थापित करने की आवश्यकता है

CREATE EXTENSION btree_gist;

एक बार हमारे पास यह हो जाने के बाद, हमारे पास एक हो सकता है date_range फ़ील्ड पर एक और फ़ील्ड के साथ संयुक्त के साथ बाधा हमारी मेज में

मान लें कि हमारे पास एक होटल रूम नंबर (रूम_आईडी) है और एक बुकिंग दिनांक सीमा (dt_range) है, जो संयुक्त है, अद्वितीय होना चाहिए। हमारी बाधा होगी

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

अब, जब भी हमारे पास विवादित बुकिंग तिथियों के साथ रूम रूम_ड के लिए बुकिंग होती है, तो पोस्टग्रेस एक त्रुटि फेंक देगा जो एक है

django.db.utils.IntegrityError

मुझे आशा है कि वह मदद करेंगे!