2012-03-30 14 views
5

शीर्षक भ्रामक रही होगी, लेकिन मेरे समझाने कृपया:Django में फोन नंबर संग्रहीत करते समय, क्या मुझे उन्हें कच्चे अंकों के रूप में स्टोर करना चाहिए या django.contrib.localflavor का उपयोग करना चाहिए?

वर्तमान में जब मैं 5554441234 जैसे कच्चे अंकों के साथ फोन नंबर भंडारण कर रहा हूँ। फिर मेरे टेम्पलेट में मैं 555-444-1234 जैसे किसी चीज़ में "प्रारूप" करने जा रहा था।

मुझे Django के localflavor में एहसास हुआ, US phone number field है जो जांचता है कि कोई स्ट्रिंग XXX-XXX-XXXX प्रारूप में है या नहीं।

तो मेरा प्रश्न है क्या मुझे फोन नंबर को कच्चे अंकों के रूप में दर्ज करना चाहिए, फिर इसे टेम्पलेट में प्रारूपित करना चाहिए या क्या मुझे स्थानीय स्तर का उपयोग करके स्वरूपित तरीके से फोन नंबर दर्ज करना चाहिए?

यदि मैं बाद वाला चुनता हूं, तो XXX-XXX-XXXX स्वरूप प्रतिबंध database API स्तर या Django व्यवस्थापक पृष्ठ पर भी लागू होगा?

उत्तर

9

उन्हें दर्ज के रूप में स्टोर करें, केवल आवश्यक होने पर केवल सफेद स्थान को पट्टी करें। जिस तरह से उपयोगकर्ता अपना नंबर स्वरूपित करता है, वह अर्थपूर्ण जानकारी संग्रहीत करता है जिसे आप इसे सामान्यीकृत करके खोना नहीं चाहते हैं। यूएस में प्रारूप XXX-XXX-XXXX बहुत आम है, लेकिन अन्य लोकल पूरी तरह से अलग प्रारूपों का उपयोग करते हैं। उदाहरण के लिए, जहां मैं कुछ सामान्य प्रारूपों में रहता हूं वे हैं: XX-XXX XXX XX, XXX/XXX XX XX, +46(0)70-XXX XX XX और विज्ञापन नॉटम पर।

उपयोगकर्ता को प्रदर्शित किया गया नंबर उसी प्रारूप में होना चाहिए जैसा कि दर्ज किया गया है, अन्यथा वह इसे मंग के रूप में सोचता है या अगर वह किसी भिन्न शैली में प्रारूपित होता है तो उपयोगकर्ता को इसका उपयोग नहीं किया जा सकता है । यह चर्चा भी देखें: http://discuss.fogcreek.com/dotnetquestions/default.asp?cmd=show&ixPost=6079&ixReplies=6

+0

मैं Django व्यवस्थापक में कैसे जांचूँगा? 'Models.py' स्तर पर' XXX-XXX-XXXX' सत्यापन को लागू करने के लिए 'CharField' को टैग करने का कोई तरीका है? – hobbes3

+3

बिंदु यह है कि आपको ** ** इसे लागू करने का प्रयास नहीं करना चाहिए। उपयोगकर्ताओं को यह बताने के लिए आपकी साइट का व्यवसाय नहीं है कि उन्हें अपने फोन नंबर कैसे प्रारूपित करना चाहिए। –

2

यदि आप फॉर्म ढांचे का उपयोग कर रहे हैं (उदाहरण के लिए, Django व्यवस्थापक में), इनपुट की सत्यापन आवेदन स्तर पर की जाएगी। तो, फॉर्म में फोन नंबर दर्ज करने के लिए, आपको इसे XXX-XXX-XXXX पर प्रारूपित करना होगा।

डेटाबेस स्तर पर, यह केवल CharField है, इसलिए डेटाबेस प्रारूप के लिए कोई जांच नहीं करता है।

+1

आप 'models.py' स्तर पर मान्य करने के लिए चाहते हैं स्थापित करने की आवश्यकता है, तो आप' मॉडल के लिए pre_save' संकेत करने के लिए अपने समारोह संलग्न कर सकते हैं। उस फ़ंक्शन में आप इनपुट को सत्यापित करने के लिए 'localflavor' का उपयोग कर सकते हैं। – gakhov