Names
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 aNameinstance.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
- STRING_FORMAT
- EMPTY_ATTRIBUTE_DEFAULT
- OPTIONS
- TITLES
- FIRST_NAME_TITLES
- SUFFIX_ACRONYMS
- SUFFIX_NOT_ACRONYMS
- CONJUNCTIONS
- PREFIXES
- CAPITALIZATION_EXCEPTIONS
- REGEXES
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
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
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)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| django-names-1.0.5.tar.gz | 15.8 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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.