Django में 'max_length' का अधिकतम आकार क्या है?


86

यह मेरा मॉडल है:

class Position(models.Model):
    map = models.ForeignKey(Map,primary_key=True)
    #members=models.CharField(max_length=200)
    LatLng = models.CharField(max_length=40000)
    infowindow = models.CharField(max_length=40000)

लेकिन यह नहीं चल सकता। max_lengthपैरामीटर का अधिकतम आकार क्या है ?

जवाबों:


104

यह डेटाबेस बैकएंड पर निर्भर करता है। Django डीबी डॉक्स आपको बता देंगे, कि max_length=255हमेशा काम करने के लिए गारंटी है।

यदि आपको अपने प्रश्न में निर्दिष्ट राशि की कुछ आवश्यकता है, तो मैं एक TextField का उपयोग करने का सुझाव दूंगा


2
इस मामले के साथ इस तथ्य के साथ युग्मित होने के कारण कि डीबी के लिए मैं इसका उपयोग भी करता है अद्वितीय विकल्प को 255 तक सीमित करता है, मैं व्यक्तिगत रूप से मंत्र से चिपकता हूं कि अगर मुझे एक CharField की आवश्यकता है जो 255 से बड़ा है तो मैं इसे TextField बनाता हूं।
digitaldreamer

13
TextField का अधिकतम आकार भी DB निर्भर है। MySQL के लिए, इसके 4 ट्रिलियन के आसपास कहीं।
जस्टिन अब्रह्म्स

2
MySQL Charfield में एक varchar है, अधिकतम 65,535 (लेकिन यह भी अधिकतम पंक्ति आकार है), stackoverflow.com/questions/13506832/… देखें । बड़े अधिकतम आकार का उपयोग करने का कोई दंड नहीं है, MySQL का उपयोग वह करेगा जो वास्तव में इसकी आवश्यकता है। ध्यान दें कि टेक्स्टफिल्ड को अलग-अलग तरीके से संभाला जाता है, प्रदर्शन निहितार्थ के साथ, इसलिए इसे अन्य क्षेत्रों के साथ किसी अन्य तालिका में अनुक्रमित करना बेहतर होता है (डीबी पृष्ठ पर अधिक अनुक्रमित पंक्तियाँ बेहतर), आप जो चाहते हैं उसे पाएं, फिर अब ज्ञात कुंजी के साथ टेक्स्टफील्ड प्राप्त करें।
अविया लाओर

2
जबकि TextField> 255 स्ट्रिंग्स के लिए एक ठीक विकल्प है, यह max_lengthमॉडल (या डेटाबेस) स्तर पर लागू नहीं होता है। यह चारफिल्ड के मामले में कुछ सत्यापन तर्क को उलट सकता है जो आपको एक max_lengthDjango को लागू करने की अनुमति देता है।
elnygren

1
लिंक किए गए पैराग्राफ में कहा गया है: "कोई भी फ़ील्ड जो VARCHAR कॉलम प्रकारों के साथ संग्रहीत होती है, उनके पास अधिकतम अधिकतम 255 वर्णों तक सीमित होता है यदि आप अद्वितीय = क्षेत्र के लिए सही उपयोग कर रहे हैं। यह चारफिल्ड, स्लगफिल्ड को प्रभावित करता है।"
क्रिस


1

यह बैकएंड डेटाबेस पर निर्भर करता है। यदि आप MySQL 5.6 का उपयोग करते हैं तो 65,535 की सीमा है। यदि आप ऊपर प्रयोग कर रहे हैं तो यह 1024 के लिए भी अनुमति देगा लेकिन उससे आगे नहीं।

class Demo(models.Model):
    max_test = models.CharField(max_length=1024)

मैं MySQL 5.7 पर ऊपर भागा


1
यदि यह काम कर रहा है तो स्वीकृत उत्तर में पहले से बताए गए डेटाबेस बैकएंड पर निर्भर करेगा। जबकि यह काम कर सकता है, बेहतर समाधान TextField का उपयोग करना है।
कोलीडीयर

0

यह वास्तव में उस डेटाबेस पर निर्भर करता है जिसका आप मॉडल के लिए उपयोग करते हैं। PostgreSQL, MySQL और इतने पर अलग सेटिंग्स और सीमाएँ हैं।

यदि आपको वास्तव में एक लंबी स्ट्रिंग की आवश्यकता है या यह सुनिश्चित नहीं है कि चर कितना लंबा होगा, तो हमेशा साथ जाने के लिए हमेशा सुरक्षित होता है variable=models.TextField()

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.