Skip to main content

Names

pypi pypi codecov Build Status

Names is a reusable app for Django that provides mixins, models and form fields to store a full name and its individual components. The following name components are supported:

  • Full name
  • Title
  • First name
  • Middle name
  • Last name
  • Suffix
  • Nickname

Names officially supports the following:

  • Python 3.6 - 3.7
  • Django 1.11, 2.0 - 2.2

Table of Contents

Installation

To install, simply use pipenv (or pip):

>>> pipenv install django-names

Add names to your INSTALLED_APPS setting:

INSTALLED_APPS = [
    ...
    "names",
]

Run migrations:

>>> python manage.py migrate names

Basic Usage

>>> from names.models import Name
>>> name = Name.objects.create(full="Natalia Alianovna 'Natasha' Romanova")
>>> name.full
'Natalia Alianovna Romanova (Natasha)'
>>> name.first
'Natalia'
>>> name.middle
'Alianovna'
>>> name.last
'Romanova'
>>> name.nickname
'Natasha'

Features

Names was designed to be flexible. It comes with three primary features:

  • Name: A model that parses and stores full names.
  • NameField: A model field that provides a one-to-one relationship to a Name instance.
  • NameModelMixin: A mixin that can be used to extend existing models.

Name model

The Name model contains fields and methods that store a full name and its individual components.

>>> from names.models import Name
>>> name = Name.objects.create(full="Anthony Edward Stark (Tony)")
>>> name
<Name: Anthony Edward Stark (Tony)>
>>> name.full
'Anthony Edward Stark (Tony)'
>>> name.title
''
>>> name.first
'Anthony'
>>> name.middle
'Edward'
>>> name.last
'Stark'
>>> name.suffix
''
>>> name.nickname
'Tony'

When you update an individual name component, the full name updates automatically when the instance is saved.

>>> name.nickname = "Iron Man"
>>> name.save()
>>> name.full
'Anthony Edward Stark (Iron Man)'

NameField model field

NameField has a one-to-one relationship to a Name instance.

from names.fields import NameField

class User(models.Model):
    name = NameField(on_delete=models.CASCADE)
>>> from names.models import Name
>>> name = Name.objects.create(full="Carol Susan Jane Danvers")
>>> User = User.objects.create(name=name)
>>> user.name.full
'Carol Susan Jane Danvers'

NameModelMixin mixin

Name inherits its functionality from the NameModelMixin mixin. You can use this mixin to extend existing models to avoid adding a field with a one-to-one relationship or additional database tables.

from names.mixins import NameModelMixin

class User(NameModelMixin):
    pass
>>> user = User.objects.create(full="General Nicholas Joseph 'Nick' Fury")
>>> user.full
'General Nicholas Joseph Fury (Nick)'
>>> user.title
'General'

Settings

Names uses the NAME_SETTINGS namespace for all settings. The following settings are supported:

MAX_LENGTH

type <int>

Max length of each CharField defined in the NameModelMixin mixin.

Default:

100

STRING_FORMAT

type <str>

Sets the output string for the full field.

Default

"{title} {first} {middle} {last} {suffix} ({nickname})"

Learn more

Change the output string with string formatting

EMPTY_ATTRIBUTE_DEFAULT

type <str>

Value returned by empty name attributes.

Default

""  # empty string

OPTIONS

type <dict>

Handles recognition of titles, prefixes, suffixes and conjunctions. The OPTIONS setting is very powerful and can be used to customize how you parse names.

Default

"OPTIONS": {
   "TITLES": TITLES,
   "SUFFIX_NOT_ACRONYMS": SUFFIX_NOT_ACRONYMS,
   "CONJUNCTIONS": CONJUNCTIONS,
   "PREFIXES": PREFIXES,
   "CAPITALIZATION_EXCEPTIONS": CAPITALIZATION_EXCEPTIONS,
   "REGEXES": REGEXES,
}

Options are imported from python-nameparser, which is the library used to parse names.

Learn more

Editable attributes

Metadata

Release files for django-names 1.0.5

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-names 1.0.5
File Size Uploaded Provenance
django-names-1.0.5.tar.gz 15.8 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for django-names 1.0.5
File Interpreter ABI Platform
django_names-1.0.5-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 25.1 kB

Release files / django-names-1.0.5.tar.gz

Download URL django-names-1.0.5.tar.gz
Size 15.8 kB
Tags Source
SHA-256 checksum
How to use checksums
60a0161d42c05559c8bcb0495288577d6a87b9aa1f51a0bfb8b2b24935e6d52b
BLAKE2b-256 checksum
How to use checksums
03bfca5dd7e53a6385020c70fdad3895f6796d96261074e60b9ab4ac5a870ade
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.3

Release files / django_names-1.0.5-py2.py3-none-any.whl

Download URL django_names-1.0.5-py2.py3-none-any.whl
Size 9.3 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
9c3f39a97115154b2474cf696c7d69d1361a93046cc0298d76c66178052ac504
BLAKE2b-256 checksum
How to use checksums
65d6f51c8c91762b3159be62e15e9081e9fa5fd257135f7e73de609e7ff4c337
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.3

Security for django-names 1.0.5

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

1.0.5 This release

2 release files No provenance

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