2012-04-09 17 views
5

मैं django के लिए काफी नया हूँ, और Drupal से इसे स्थानांतरित कर दिया।डीबी में ऐप से संबंधित चर स्टोर करने के लिए कोई django idiom है?

ड्रूपल में मॉड्यूल-स्तरीय वेरिएबल्स को परिभाषित करना संभव है (डीजेएनओ में संग्रहीत "एप्लिकेशन" पढ़ें) जो डीबी में संग्रहीत हैं और ड्रूपल की "कोर टेबल" में से एक का उपयोग करें। मुहावरा होगा कुछ की तरह:

variable_set('mymodule_variablename', $value); 
variable_get('mymodule_variablename', $default_value); 
variable_del('mymodule_variablename'); 

विचार है कि यह कोई मतलब नहीं होगा प्रत्येक मॉड्यूल (ऐप्लिकेशन) एक पूरी "मॉड्यूल तालिका" सिर्फ़ एक मान स्टोर करने के लिए का दृष्टांत करने के लिए है, इसलिए कोर प्रदान करता है मॉड्यूल में साझा करने के लिए एक आम एक।

Django की मेरी नौसिखिया समझ का सबसे अच्छा करने के लिए, Django इस तरह के एक कार्यक्षमता की कमी है, लेकिन - क्योंकि यह एक आम पैटर्न है - मैं इतना समुदाय के लिए जांच अगर वहाँ एक विशिष्ट/मानक/मुहावरेदार तरीका है करने के लिए बारी करने के लिए सोचा कि django devs इस समस्या को हल करने के लिए उपयोग करते हैं

(बीटीडब्लू: मान स्थिर नहीं है कि मैं एक सेटिंग फ़ाइल में डाल सकता हूं। यह एक मूल्य है जिसे प्रतिदिन ताज़ा किया जाना चाहिए, और प्रत्येक अनुरोध पर पढ़ा जाना चाहिए)।

उत्तर

6

इस लक्ष्य को हासिल करने के लिए क्षुधा हैं, लेकिन मैं Disqus से django-modeldict सिफारिश करने के लिए, जैसा कि इसके संक्षिप्त

ModelDict अपने डेटाबेस में सेटिंग जैसी चीज़ें स्टोर करने के लिए एक बहुत प्रभावी तरीका है चाहते हैं। संपूर्ण मॉडल को (आलसी) के साथ-साथ आपके कैश में संग्रहीत किया जाता है। यह केवल तभी अमान्य है जब यह होना चाहिए (प्रक्रिया में और CACHE_BACKEND के आधार पर)।

+0

मुझे थोड़ी देर के लिए ऐसा कुछ ढूंढ रहा है - यह एक अच्छा कार्यान्वयन जैसा दिखता है। Disqus के लिए तीन चीयर्स। –

+0

धन्यवाद, ऐसा लगता है कि बिल पूरी तरह फिट हो रहा है। :) – mac

2

डेटा जो स्थिर नहीं है मॉडल में संग्रहीत किया जाता है। यदि आपको ऐप्स के बीच डेटा या फ़ंक्शंस साझा करने की आवश्यकता है तो मैंने साझा ऐप बनाने का सम्मेलन देखा है, कुछ 'सामान्य' जैसा। यह साझा मॉडल, या उपयोगिता कार्यों घर होगा।

django परियोजनाओं में मैंने देखा है कि डेटा आमतौर पर विशिष्ट होता है। आपके द्वारा संग्रहीत डेटा उस मॉडल में होना चाहिए जो उस डेटा का प्रतिनिधि है, मेरे पास एक स्पष्ट मॉडल/ऑब्जेक्ट होगा जो मेरे डेटा का प्रतिनिधित्व करता है, फिर एक सामान्य वस्तु जिसमें बहुत अलग डेटा होता है।

यदि आप केवल 1 या दो चर को परिभाषित कर रहे हैं जो प्रतिदिन बदल जाते हैं, तो शायद आपके लिए मेमकैड की तरह एक कुंजी/मूल्य स्टोर काम करेगा?

0

मॉडलडिक्ट के लिए एक और +1। ,

https://github.com/jazzband/django-constance

यह डेटाबेस में अनुप्रयोग config मानकों की दुकान करने के लिए होती है और लाभ यह है कि यह (सही अनुमति के साथ) उन्हें प्रशासकों के लिए संपादित करने के लिए एक अच्छा बैकएंड को उजागर करता है है: एक अन्य संभावित, समान समाधान Django Constance है मूलभूत मूल्यों को संभालती है और यह भी है कैशिंग आदि

संपादित करें: '। pythonic तरीका'

मामले में यह प्रलेखन (जो यह नहीं है), तो आप सेटिंग्स एक ही सेट कर सकते हैं से स्पष्ट नहीं है अर्थात। एक मूल्य के लिए एक सेटिंग सेट करने के लिए, आप Constance आयात config

config से

है।variable_name = value