NanoID is an alternative to UUID, CUID for generating random IDs. This package provides a field to use in models.
- Create
AutoField
that uses NanoID instead of regular integer ID.
Install it from PyPI:
pip install django-nanoid-field
First, add it to your applications (Not Required)
INSTALLED_APPS = [
# ...
'nanoid_field',
# ...
]
You can now use it in your models like:
from django.db import models
from nanoid_field import NanoidField
class Profile(models.Model):
hash = NanoidField(max_length=10, alphabet='0123456789abcdefghijklmnopqrstuvwxyz)
This model field is based on CharField
. All of it's parameters can be used.
Additionally following fields affects outcome of NanoID:
Determines size of the generated ID as well as length of the field in Database.
21
This optional parameter helps you to determine which characters will be used to build up.
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz-
To use NanoID as default primary_key
you need to explicitly define it in your
model:
from django.db import models
class SomeModel(models.Model):
id = NanoidField()
# ...
django-nanoid-field
also provides two settings to change defaults of alphabet
and max_length
. You can change those by adding them to your settings.py
file
# settings.py file
NANOID_ALPHABET = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz-"
NANOID_SIZE = 21