NanoID is an alternative to UUID, CUID for generating random IDs. This package provides a field to use in models.
- Create
AutoFieldthat uses NanoID instead of regular integer ID.
Install it from PyPI:
pip install django-nanoid-fieldFirst, 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