Skip to main content

Universally Unique Lexicographically Sortable Identifier (ULID) support in Django

Project description

Build Status codecov Code Climate Issue Count

PyPI Version PyPI Versions

Universally Unique Lexicographically Sortable Identifier (ULID) support in Django.


This project is actively maintained.


To install django-ulid from pip:

$ pip install django-ulid

To install ulid from source:

$ git clone
$ cd django-ulid && python install


Adding a ULID field to your Django models is straightforward. It can be a normal field or a primary key.

from django.db import models
from django_ulid.models import default, ULIDField

class Person(models.Model):
    id = ULIDField(default=default, primary_key=True, editable=False)

Passing in default to the ULIDField will automatically create a default value using the function. If you do not want a default value, None by default, feel free to omit it.

from django.db import models
from django_ulid.models import ULIDField

class Person(models.Model):
    optional_id = ULIDField()

Adding a ULID field to your Django REST Framework serializers is also straightforward.

Simply importing the django_ulid.serializers module will automatically register the ULIDField serializer by overriding the serializer_field_mapping on the default ModelSerializer.

from django_ulid import serializers

If you are using a ULID as a primary key on a model, you need to create a custom PrimaryKeyRelatedField to automatically serialize the instance through the foreign key.

import functools
from django_ulid.serializers import ULIDField
from rest_framework import serializers

PersonPrimaryKeyRelatedField = functools.partial(serializers.PrimaryKeyRelatedField,

class OrganizationSerializer(serializers.ModelSerializer):
    owner = PersonPrimaryKeyRelatedField()


If you would like to contribute, simply fork the repository, push your changes and send a pull request. Pull requests will be brought into the master branch via a rebase and fast-forward merge with the goal of having a linear branch history with no merge commits.


Apache 2.0


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-ulid-0.0.4.tar.gz (8.3 kB view hashes)

Uploaded source

Built Distribution

django_ulid-0.0.4-py2.py3-none-any.whl (9.3 kB view hashes)

Uploaded py2 py3

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page