Django में CharField()
और TextField()
के बीच क्या अंतर है? documentation का कहना है कि CharField()
छोटे तारों के लिए उपयोग किया जाना चाहिए और TextField()
बड़े तारों के लिए उपयोग किया जाना चाहिए। ठीक है, लेकिन "छोटे" और "बड़े" के बीच खींची गई रेखा कहां है? यहां हुड के नीचे क्या चल रहा है जो इस मामले को बनाता है?Django CharField बनाम TextField
उत्तर
यह आरडीबीएमएस के varchar
(या समान) के बीच एक अंतर है - आमतौर पर उन्हें अधिकतम लंबाई के साथ निर्दिष्ट किया जाता है, और प्रदर्शन या भंडारण के मामले में अधिक कुशल हो सकता है - और text
(या समान) प्रकार - आमतौर पर केवल सीमित होते हैं हार्डकोडेड कार्यान्वयन सीमा (डीबी स्कीमा नहीं)।
PostgreSQL 9, विशेष रूप से, "There is no performance difference among these three types" बताता है, लेकिन AFAIK में कुछ अंतर हैं उदा। MySQL, तो यह ध्यान में रखना कुछ है।
अंगूठे का एक अच्छा नियम यह है कि आप अधिकतम लंबाई, TextField
को सीमित करने की आवश्यकता होने पर CharField
का उपयोग करते हैं।
यह वास्तव में Django- विशिष्ट भी नहीं है।
कुछ मामलों में यह क्षेत्र के उपयोग के तरीके से जुड़ा हुआ है। कुछ डीबी इंजनों में फ़ील्ड अंतर निर्धारित करते हैं कि कैसे (और यदि) आप फ़ील्ड में टेक्स्ट की खोज करते हैं। CharFields आमतौर पर उन चीजों के लिए उपयोग किया जाता है जो खोजने योग्य हैं, जैसे कि आप "एक प्लस दो" स्ट्रिंग में "एक" खोजना चाहते हैं। चूंकि तार कम होते हैं क्योंकि इंजन के माध्यम से खोज करने में वे कम समय लेते हैं। टेक्स्टफिल्ड्स आमतौर पर खोज के लिए नहीं होते हैं (जैसे कि ब्लॉग का शरीर) लेकिन टेक्स्ट के बड़े हिस्से को पकड़ने के लिए हैं। अब यह अधिकांश डीबी इंजन पर निर्भर करता है और पोस्टग्रेस की तरह इससे कोई फर्क नहीं पड़ता।
यदि आप कोई फर्क नहीं पड़ता है, तो यदि आप मॉडलफॉर्म का उपयोग करते हैं तो आपको फॉर्म में एक अलग प्रकार का संपादन फ़ील्ड मिलता है। मॉडलफॉर्म एक HTML फॉर्म को टेक्स्टफिल्ड के लिए चारफिल्ड और मल्टीलाइन के लिए टेक्स्ट की एक पंक्ति का आकार देगा।
उदाहरण के लिए,। 2 क्षेत्रों नीचे की तरह एक मॉडल में जुड़ जाते हैं ..
description = models.TextField(blank=True, null=True)
title = models.CharField(max_length=64, blank=True, null=True)
नीचे जब माइग्रेशन लागू होते हैं मार डाला mysql क्वेरी दी गई हैं।
TextField
(विवरण) क्षेत्र के लिए
के रूप में परिभाषित किया गया है एक CharField
(शीर्षक) MAX_LENGTH (अपेक्षित) varchar(64)
ALTER TABLE `sometable_sometable` ADD COLUMN `title` varchar(64) NULL;
ALTER TABLE `sometable_sometable` ALTER COLUMN `title` DROP DEFAULT;
के रूप में परिभाषित किया गया है के लिए longtext
ALTER TABLE `sometable_sometable` ADD COLUMN `description` longtext NULL;
CharField 255 अक्षरों की MAX_LENGTH है जबकि टेक्स्टफिल्ड 255 से अधिक वर्ण रख सकता है। जब आपके पास इनपुट के रूप में बड़ी स्ट्रिंग होती है तो टेक्स्टफ़ील्ड का उपयोग करें। यह जानना अच्छा होता है कि जब max_length पैरामीटर को टेक्स्टफ़िल्ल्ड में पास किया जाता है तो यह टेक्स्टएरिया विजेट की लंबाई सत्यापन को पास करता है।
- 1. Django - Admin: list_display TextField
- 2. Django ORM, CharField और खाली = सच
- 3. एक CharField को व्यवस्थापक
- 4. textfield
- 5. Django मॉडल में Nullable TextField या खाली स्ट्रिंग?
- 6. मैं Django में एक CharField पर प्लेसहोल्डर कैसे जोड़ूं?
- 7. Extjs textfield
- 8. TextField पर URLField का उपयोग करने के लाभ?
- 9. Django व्यवस्थापक: केवल TinyMCE को विशेष TextField में जोड़ें?
- 10. TextField() सेट कैरट स्थिति
- 11. django-pyodbc बनाम django-mssql
- 12. क्षैतिज स्क्रॉल और TextField त्रुटि
- 13. Grails बनाम Django
- 14. django-signals बनाम ट्रिगर्स?
- 15. grok बनाम django तुलना
- 16. Django बनाम App इंजन
- 17. Django: ContentType बनाम multi_table_inheritance
- 18. Django फ़िल्टर बनाम
- 19. चेरीपी बनाम Django
- 20. संदर्भ प्रोसेसर बनाम मिडलवेयर बनाम django
- 21. Django ReSTful API - django-piston बनाम django-tastypie
- 22. फ्लाई पर EmberJS TextField मान्य करें?
- 23. TextField कक्षा के लिए Ember.js घटनाओं
- 24. छोटे बटन के साथ ExtJs TextField
- 25. पृष्ठभूमि छवि TextField नहीं करता दिखाई
- 26. Django सिग्नल बनाम ओवरराइडिंग विधि
- 27. Django 1.3: MEDIA_URL बनाम STATIC_URL
- 28. विदेशीकी बनाम वनटोन क्षेत्र django
- 29. रूबी ऑन रेल्स बनाम Django
- 30. Django प्रश्न - आईडी बनाम पीके
और इसके विपरीत, यदि आप चारफ़ील्ड का उपयोग करते हैं तो आपको * अधिकतम लंबाई –
होनी चाहिए मुझे पता चला है कि डिफ़ॉल्ट रूप से 'टेक्स्टफ़िल्ल्ड' का उपयोग करके आपके ऐप की पोर्टेबिलिटी प्रभावित हो सकती है। पोस्टग्रेज़ पर प्रदर्शन हिट नहीं हो सकता है, लेकिन ओरेकल इसे 'सीएलओबी' के रूप में स्टोर करेगा, जिसमें कुछ परेशानियां हैं, जैसे कि WHERE कथन में फ़ील्ड का उपयोग करने में सक्षम नहीं है। बस कुछ विचार करने के लिए। – Rob
किसी को भी यह मानना चाहिए कि ओरेकल 'चारफ़िल्ल्ड' में 2000 से अधिक 'max_length' नहीं हो सकता है, या यह' ओआरए -00 9 10: निर्दिष्ट डेटा लंबाई के लिए निर्दिष्ट लम्बाई 'जारी करता है। – Dinei