आप वास्तव में अंतरराष्ट्रीय स्तर पर मानकीकृत प्रारूप E.164 में देख सकते हैं , उदाहरण के लिए ट्विलियो द्वारा अनुशंसित (जिनके पास एक सेवा है और REST अनुरोधों के माध्यम से एसएमएस या फोन-कॉल भेजने के लिए एपीआई)।
यह फोन नंबर स्टोर करने का सबसे सार्वभौमिक तरीका होने की संभावना है, विशेष रूप से यदि आपके पास अंतरराष्ट्रीय नंबर काम करते हैं।
1. PhoneNumberField द्वारा फ़ोन
आप phonenumber_field
पुस्तकालय का उपयोग कर सकते हैं । यह Google की libphonenumber लाइब्रेरी का पोर्ट है, जो एंड्रॉइड के फोन नंबर को हैंडल करने के लिए https://github.com/stefanfoulis/django-phonenumber-field को पावर करता है
मॉडल में:
from phonenumber_field.modelfields import PhoneNumberField
class Client(models.Model, Importable):
phone = PhoneNumberField(null=False, blank=False, unique=True)
सूचित करना:
from phonenumber_field.formfields import PhoneNumberField
class ClientForm(forms.Form):
phone = PhoneNumberField()
ऑब्जेक्ट फ़ील्ड से स्ट्रिंग के रूप में फ़ोन प्राप्त करें:
client.phone.as_e164
Normolize फोन स्ट्रिंग (परीक्षण और अन्य कर्मचारियों के लिए):
from phonenumber_field.phonenumber import PhoneNumber
phone = PhoneNumber.from_string(phone_number=raw_phone, region='RU').as_e164
2. फोन regexp द्वारा
आपके मॉडल के लिए एक नोट: E.164 नंबर की अधिकतम वर्ण लंबाई 15 है।
मान्य करने के लिए, आप स्वरूपण के कुछ संयोजन को नियोजित कर सकते हैं और फिर सत्यापित करने के लिए तुरंत नंबर पर संपर्क करने का प्रयास कर सकते हैं।
मेरा मानना है कि मैंने अपने django प्रोजेक्ट पर निम्नलिखित कुछ का उपयोग किया:
class ReceiverForm(forms.ModelForm):
phone_number = forms.RegexField(regex=r'^\+?1?\d{9,15}$',
error_message = ("Phone number must be entered in the format: '+999999999'. Up to 15 digits allowed."))
संपादित करें
ऐसा प्रतीत होता है कि यह पोस्ट कुछ लोगों के लिए उपयोगी रही है, और नीचे दिए गए टिप्पणी को और अधिक पूर्ण उत्तर में एकीकृत करने के लिए इसके लायक लगता है। Jpotter6 के अनुसार , आप अपने मॉडल पर निम्न की तरह कुछ कर सकते हैं:
models.py:
from django.core.validators import RegexValidator
class PhoneModel(models.Model):
...
phone_regex = RegexValidator(regex=r'^\+?1?\d{9,15}$', message="Phone number must be entered in the format: '+999999999'. Up to 15 digits allowed.")
phone_number = models.CharField(validators=[phone_regex], max_length=17, blank=True) # validators should be a list