Skip to main content

Next generation NanoID in Django Model IDs

Project description

Django NanoID Field

NanoID is an alternative to UUID, CUID for generating random IDs. This package provides a field to use in models.

Installation

Install it from PyPI:

pip install django-nanoid-field

Usage

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)

NanoidField

This model field is based on CharField. All of it's parameters can be used.

Additionally following fields affects outcome of NanoID:

max_length Parameter (Optional)

Determines size of the generated ID as well as length of the field in Database.

DEFAULT:

21

alphabet Parameter (Optional)

This optional parameter helps you to determine which characters will be used to build up.

DEFAULT:

0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz-

Using NanoidField as primary_key

Currently Django Auto Field feature does not allow using fields other than Integer based fields. Until this ability changes you cannot use this as AutoField.

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()
    # ...

Changing defaults

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-nanoid-field-0.1.2.tar.gz (3.4 kB view hashes)

Uploaded Source

Built Distribution

django_nanoid_field-0.1.2-py3-none-any.whl (3.9 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page