Lightweight model and form field for phone numbers in Django
Project description
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
.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file django-phone-field-1.8.1.tar.gz
.
File metadata
- Download URL: django-phone-field-1.8.1.tar.gz
- Upload date:
- Size: 19.7 kB
- Tags: Source
- Uploaded using 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
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
db63af60fc3a3c66b9faa7e72bb7972cd1518299f2e93d68dd95d8df6214f7ed
|
|
MD5 |
f66b39841e6ebc654e29a86010714fa1
|
|
BLAKE2b-256 |
2cc93aba7b0a07d4a1a7e1ef17c713abb4d2571e42e18326e7247a78e4e040cf
|
File details
Details for the file django_phone_field-1.8.1-py3-none-any.whl
.
File metadata
- Download URL: django_phone_field-1.8.1-py3-none-any.whl
- Upload date:
- Size: 7.4 kB
- Tags: Python 3
- Uploaded using 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
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
407e74b65e8f7dd14d0a0aa89e277516d57ad6a09ce992cdd94e15b1624b9961
|
|
MD5 |
47e9d4c9cf354c477b571fdf2fb11699
|
|
BLAKE2b-256 |
81c4ff34caba83e8814bfdbde02d1f67a759723c65144b26443f430619baf34b
|