2010-02-16 9 views
16

मैं Django में एक बहुत ही सरल वेबसाइट बना रहा हूं। पृष्ठों में से एक पर एक लंबवत टिकर बॉक्स है। मुझे क्लाइंट को टिकर बॉक्स की सामग्री को HTMLField के रूप में संपादित करने का तरीका देना है।Django में सिंगलटन मॉडेल होने के बारे में कैसे?

दिमाग में आने वाला पहला तरीका मॉडल Ticker बनाना था जिसमें केवल एक उदाहरण होगा। तब मैंने सोचा, मैन्युअल रूप से सुनिश्चित करने के बजाय कि केवल एक ही उदाहरण मौजूद है, शायद Django में SingletonModel वर्ग की तरह कुछ (या वहां होना चाहिए), जो एक सामान्य मॉडल की तरह है, सिवाय इसके कि यह सुनिश्चित करता है कि एक से अधिक उदाहरण नहीं बनते हैं ?

या शायद मुझे अपनी समस्या को अलग तरीके से हल करना चाहिए?

उत्तर

1

अपनी सहेजी विधि को फिर से लिखें ताकि प्रत्येक बार जब टिकर ऑब्जेक्ट सहेजा जाए तो यह मौजूदा एक को ओवरराइट करता है (यदि कोई मौजूद है)।

+2

संभव है, लेकिन फिर मैं कुछ अन्य चीजें भी चाहूंगा, जैसे व्यवस्थापक में "कोई दूसरा जोड़ें" बटन न हो, और फिर हम सभी के लिए 'सिंगलटन मॉडल' भी बना सकते हैं। –

2

मुझे लगता है कि "सिंगलटन" मॉडल बदसूरत है; यह संबंधपरक डेटाबेस का गूंगा उपयोग है और यह खराब यूआई है, क्योंकि व्यवस्थापक यूआई वस्तुओं की सूचियों के साथ काम करने के आसपास बनाया गया है।

इसके बजाय मैं django-chunks या django-flatblocks जैसे सामान्य समाधान का उपयोग करना पसंद करता हूं।

+0

यह पाठ के लिए वास्तव में बेहतर है लेकिन अन्य मॉडलों से संबंधित हिस्सों के बारे में क्या है? उदाहरण के लिए, आप होमपेज पर विशिष्ट परियोजनाओं को सूचीबद्ध करना चाहते हैं - आपको 3 विकल्पों के साथ छोड़ा गया है: ए) प्रोजेक्ट मॉडल (project.display_on_homepage) पर एक चेकबॉक्स या बी) एक होमपेज सिंगलटन या सी) फेंकम या इसी तरह के सीएमएस सेट अप करें और इसके लिए एक सामग्री प्रकार जोड़ें। –

3

आप django_singletons का उपयोग कर सकते हैं। यह व्यवस्थापक समर्थन में बनाया गया है।

1

केवल एक उदाहरण वाला एक मॉडल, एक सिंगलटन, वैश्विक सेटिंग्स जैसी चीजों के लिए कभी-कभी उपयोगी होता है जिसे आप व्यवस्थापक से संपादित करना चाहते हैं, बजाय उन्हें Django settings.py में रखने के बजाय।

कई तृतीय पक्ष अनुप्रयोग हैं जो सिंगलटन मॉडल को लागू करने में मदद करते हैं और उदाहरण के लिए व्यवस्थापक इंटरफ़ेस में सुधार करते हैं, django-solo, django-singleton-admin, django-singletons

8

django-solo आज़माएं, यह सुनिश्चित करने के लिए django 1.5 + में काम करता है, django-singletons 1.5 + के साथ काम नहीं करता है क्योंकि यह एक बहिष्कृत सुविधा का उपयोग करता है।

संबंधित मुद्दे