Skip to main content

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)

Source distribution for django-phone-field 1.8.1
File Size Uploaded
django-phone-field-1.8.1.tar.gz 19.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for django-phone-field 1.8.1
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

1.8.1 This release

2 release files

1.8.0

2 release files

1.7.1

2 release files

1.7.0

2 release files

1.6.0

2 release files

1.5.4

2 release files

1.5.3

2 release files

1.5.2

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page