मैं नियुक्तियों के लिए अन्य लोगों को निर्धारित करने की क्षमता के साथ एक कैलेंडर सिस्टम को लागू करने की कोशिश कर रहा हूं। सिस्टम को किसी अन्य नियुक्ति के दौरान या उनके अनुपलब्ध समय के दौरान किसी व्यक्ति को शेड्यूल करने से रोकने में सक्षम होना चाहिए।django कैलेंडर मुफ्त/व्यस्त/availabilitty
मैंने इंटरनेट पर मिली सभी मौजूदा डीजेंगो कैलेंडर परियोजनाओं को देखा है और उनमें से कोई भी इन्हें अंतर्निहित नहीं लगता है (अगर मैं इसे किसी भी तरह याद करता हूं, तो कृपया मुझे बताएं)।
शायद मैं बहुत थक गया हूं, लेकिन ऐसा करने का एकमात्र तरीका मैं इसे थोड़ा गन्दा लग रहा हूं। यहाँ छद्म कोड में चला जाता है:
- एक उपयोगकर्ता एक नया नियुक्ति बनाने के लिए, नई नियुक्ति के start_time हड़पने और कहा कि एक ही दिन में प्रत्येक अपॉइंटमेंट के लिए end_time
- करने का प्रयास करते, तो देखें कि
- existing_start_time < NEW_START_TIME और मौजूदा_एंड_टाइम> new_start_time (नई नियुक्तियां किसी भी मौजूदा अपॉइंटमेंट की शुरुआत और समाप्ति के समय के बीच शुरू होती हैं)
- मौजूदा_स्टार्ट_टाइम < new_end_time और मौजूदा_एंड_टाइम> new_end_time (नई नियुक्तियां एन है किसी भी मौजूदा नियुक्ति के प्रारंभ और समाप्ति समय के बीच में घ समय)
- अगर कोई वस्तुओं पाए गए, तो आगे जाना है और नई नियुक्ति
जोड़ने को ध्यान में रखते Django समय के आधार पर कोई फ़िल्टरिंग है, यह सब करना होगा क्वेरीसेट पर .extra() का उपयोग करके किया जाना चाहिए।
तो, मैं पूछ रहा हूं कि कोई बेहतर तरीका है या नहीं। एक पाइथोनिक चाल या मॉड्यूल या कुछ भी जो इसे सरल बना सकता है। या एक मौजूदा परियोजना जिसमें मुझे चाहिए या मुझे सही दिशा में ले जाया जा सकता है।
धन्यवाद।
+1 बहुत बढ़िया! देखा नहीं था कि रेंज परीक्षण Django के QuerySet API में बनाया गया था। –
महान टिप के लिए धन्यवाद। यह ऐसी घटनाओं को याद कर रहा था जो नई नियुक्ति के बाद शुरू और समाप्त हो गए थे। उदाहरण के लिए: यदि किसी ग्राहक के पास 1 से 5 तक नियुक्ति होती है, तो यह किसी को 2 से 3 तक बुकिंग करने से नहीं रोकेगा। मैंने ऐसी स्थितियों को शामिल करने के लिए निम्नलिखित जोड़ा: दौरान_conflict = Appointment.objects.filter (start_date__lte = placement.start_time, end_date__gte = नियुक्ति।end_time) अगर (start_conflict या end_conflict या दौरान_conflict): – mhost
उत्कृष्ट। मुझे खुशी है कि यह सहायक था। मैं आपका केस जोड़ने जा रहा हूं इसलिए उत्तर अधिक पूरा हो गया है। –