Installez d'abord Paquet "django-phonenumber-field". avec la commande ci-dessous :
pip install django-phonenumber-field[phonenumbers]
Ensuite, définissez "phonenumber_field" (champ du numéro de téléphone) a INSTALLED_APPS en "settings.py" :
# "settings.py"
INSTALLED_APPS = [
...
"phonenumber_field",
...
]
Ensuite, définissez un champ avec "PhoneNumberField()" en "models.py" :
# "models.py"
from django.db import models
from phonenumber_field.modelfields import PhoneNumberField
class Contact(models.Model):
phone = PhoneNumberField()
Ensuite, enregistrez-vous "Contact" en "admin.py" :
# "admin.py"
from django.contrib import admin
from .models import Contact
@admin.register(Contact)
class ContactAdmin(admin.ModelAdmin):
pass
Ensuite, exécutez la commande ci-dessous :
python manage.py makemigrations && python manage.py migrate
Le champ pour un numéro de téléphone est maintenant créé comme indiqué ci-dessous :
En outre, assigner le widget "PhoneNumberPrefixWidget()" au champ dans un formulaire personnalisé et assigner le formulaire personnalisé à l'administrateur comme indiqué ci-dessous :
# "admin.py"
from django.contrib import admin
from .models import Contact
from django import forms
from phonenumber_field.widgets import PhoneNumberPrefixWidget
class ContactForm(forms.ModelForm):
class Meta:
widgets = {
'phone': PhoneNumberPrefixWidget(),
}
@admin.register(Contact)
class ContactAdmin(admin.ModelAdmin):
form = ContactForm
Maintenant, avec les codes de pays, le champ pour un numéro de téléphone est créé
De plus, vous pouvez définir un code pays initial comme initial='US' a "PhoneNumberPrefixWidget()" comme indiqué ci-dessous. *Le code pays initial doit être en majuscules :
# "admin.py"
from django.contrib import admin
from .models import Contact
from django import forms
from phonenumber_field.widgets import PhoneNumberPrefixWidget
class ContactForm(forms.ModelForm):
class Meta:
widgets = { # Here
'phone': PhoneNumberPrefixWidget(initial='US'),
}
@admin.register(Contact)
class ContactAdmin(admin.ModelAdmin):
form = ContactForm
Aujourd'hui, avec le code pays initial "US" sélectionné Le champ d'un numéro de téléphone est créé :
Vous pouvez également définir un code pays initial avec "NUMÉRO DE TÉLÉPHONE_RÉGION_PAR_DÉFAUT" en "settings.py" comme indiqué ci-dessous, mais je recommande de définir un code pays initial avec initial='US' a "PhoneNumberPrefixWidget()" comme je l'ai fait ci-dessus, car l'utilisation de "NUMÉRO DE TÉLÉPHONE_RÉGION_PAR_DÉFAUT" Il arrive parfois que les numéros de téléphone enregistrés ne s'affichent pas dans Administrateur Django :
# "settings.py"
PHONENUMBER_DEFAULT_REGION = "US"