2008-11-12 12 views
9

संक्षेप में: आप Django मॉडल में बिगिनट कैसे निर्दिष्ट करते हैं?डीजेंगो मॉडल में बिग इंटीजर फ़ील्ड

वर्तमान प्रोजेक्ट में मैं Django (0.97-svn रिलीज़) का उपयोग कर कर रहा हूं, मेरे पास इंटीजरफ़िल्ल्ड के रूप में परिभाषित सभी मॉडलों में सभी पूर्णांक फ़ील्ड हैं। यह विकास चक्र के दौरान निर्विवाद रूप से काम कर रहा था जहां मैं डीबी बैकएंड के लिए SQLite का उपयोग कर रहा था। हालांकि, जैसे ही मैंने माईएसक्यूएल में घुमाया, मैंने देखा कि इंटीजरफिल्ड्स में से एक के लिए, MySQL डेटा को छोटा कर रहा था --- स्पष्ट रूप से, कारणों के कारण अभी भी अज्ञात है, SQLite शिकायत नहीं करता था। मैंने स्कीमा को देखा और पाया कि Django में एक इंटीजरफिल्ड को MySQL में एक आईएनटी (11) फ़ील्ड के रूप में दर्शाया गया है। स्वाभाविक रूप से, कारण MySQL डेटा को छोटा कर रहा था क्योंकि डेटा लंबाई में 11-अंकों से अधिक था। काम करने के लिए, मुझे कॉलम को मैन्युअल रूप से अपडेट करना पड़ा, इस मामले में, एक बिगिनट (20) बनें। Django और MySQL उस के साथ शांतिपूर्वक coexist। लेकिन जब भी मैं उस एप्लिकेशन को रीसेट करता हूं जिसमें उस बिगिनट वाले मॉडल को आराम मिलता है, तो Django फिर से इसे एक आईएनटी (11) के रूप में बनाता है। मैंने Django दस्तावेज़ों को देखा है, और कुछ भी नहीं मिला। क्या मैंने कुछ अनदेखा किया है?

धन्यवाद।

उत्तर

5

SQLite कभी भी शिकायत नहीं करेगा। यह 'मेनिफेस्ट टाइपिंग' का उपयोग करता है, यानी, मानों का प्रकार है, कॉलम नहीं। यह आपको बिगटेक्स्ट को एक छोटे से कॉलम पर स्टोर करने देता है, या जो भी आप चाहते हैं! (सिवाय इसके कि यदि आप एक पूर्णांक प्राथमिक कुंजी को परिभाषित करते हैं, जहां यह 64-बिट पूर्णांक का उपयोग करता है)।

यह एक बहुत ही सुविधाजनक सुविधा है, लेकिन यदि आप एक अलग इंजन के साथ तैनात करने जा रहे हैं तो यह विकास के लिए SQLite खराब विकल्प बनाता है।

बिगिनट का उपयोग करने के लिए, आपको कस्टम फ़ील्ड क्लास बनाना होगा। दुर्भाग्यवश, वह हिस्सा Django 1.0 पर बदल गया है, इसलिए यदि आप अपडेट करते हैं तो आपको इसे फिर से लिखना होगा।

0

एक दशमलव फ़ील्ड आज़माएं।

23

BigIntegerField 11887, 2009-12-17 09:10:38 में परिवर्तन में जोड़ा गया था और यह Django 1.2 और नए का हिस्सा है। मेरी समस्या को हल करने के लिए

+0

+1। – bennedich

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