django-phone-field
Lightweight model and form field for phone numbers in Django
- View and edit phone numbers in forms and the Django admin in pretty format:
(415) 123-4567 - Store all phone numbers canonically in the database for easy searching & uniqueness:
+14151234567 - Built-in support for simple extensions:
(415) 123-4567, press 88 - Doesn't choke on international numbers (but doesn't format them, either)
- Automatically format phone numbers in templates
This package is simple, lightweight, and without dependencies. However, it doesn't attempt to solve fancy
problems or deal with international phone numbers. For a full-featured phone number package, take a look at
django-phonenumber-field.
Installation
This package is designed for Python 3 and Django 1.10+. Install via:
pip install django-phone-field
Then add 'phone_field' to your INSTALLED_APPS setting.
Usage
In your models.py:
from django.db import models
from phone_field import PhoneField
class MyModel(models.Model):
name = models.CharField(max_length=128)
phone = PhoneField(blank=True, help_text='Contact phone number')
PhoneField accepts standard options for a Django CharField. By default it sets max_length=31. Feel
free to override this, set blank=True, etc. as you would otherwise.
There is one special argument, E164_only=False, which adds a form validator to only accept numbers in
the E164 format (currently, only supported for US phone numbers).
In your template:
User {{ obj.name }} has phone number {{ obj.phone }}
Result:
User Ted has phone number (415) 123-1233
Database representation
PhoneField attempts to coerce all phone numbers to the following format:
+[country code][number]x[extension]
+12223334444x55
where the extension part is optional. If the input phone number can't be coerced to this
format, PhoneField gives up and simply stores it as-is.
Because all phone numbers are stored without formatting, you can set this field to be unique on a Django model and it will actually work.
Extras
Use the |phone template filter to attempt to display a formatted phone number from arbitrary text. Use
the |raw_phone template filter to display the raw, un-formatted value.
Use property .is_E164 to check if a PhoneNumber object is in E164 format.
Also provided are .is_standard (E164 but with extensions allowed) and .is_usa.
Release files for django-phone-field 1.8.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| django-phone-field-1.8.1.tar.gz | 19.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| django_phone_field-1.8.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 27.1 kB
Release files / django-phone-field-1.8.1.tar.gz
| Download URL | django-phone-field-1.8.1.tar.gz |
|---|---|
| Size | 19.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
db63af60fc3a3c66b9faa7e72bb7972cd1518299f2e93d68dd95d8df6214f7ed
|
|
BLAKE2b-256 checksum How to use checksums |
2cc93aba7b0a07d4a1a7e1ef17c713abb4d2571e42e18326e7247a78e4e040cf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.0.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.3
|
Release files / django_phone_field-1.8.1-py3-none-any.whl
| Download URL | django_phone_field-1.8.1-py3-none-any.whl |
|---|---|
| Size | 7.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
407e74b65e8f7dd14d0a0aa89e277516d57ad6a09ce992cdd94e15b1624b9961
|
|
BLAKE2b-256 checksum How to use checksums |
81c4ff34caba83e8814bfdbde02d1f67a759723c65144b26443f430619baf34b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.0.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.3
|