Universally Unique Lexicographically Sortable Identifier (ULID) support in Django
Project description
Universally Unique Lexicographically Sortable Identifier (ULID) support in Django.
Status
This project is actively maintained.
Installation
To install django-ulid from pip:
$ pip install django-ulid
To install ulid from source:
$ git clone git@github.com:ahawker/django-ulid.git $ cd django-ulid && python setup.py install
Usage
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 ulid.new 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, allow_null=True, allow_empty=True, pk_field=ULIDField(), queryset=Person.objects.all()) class OrganizationSerializer(serializers.ModelSerializer): owner = PersonPrimaryKeyRelatedField()
Contributing
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.
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size django_ulid-0.0.4-py2.py3-none-any.whl (9.3 kB) | File type Wheel | Python version py2.py3 | Upload date | Hashes View |
Filename, size django-ulid-0.0.4.tar.gz (8.3 kB) | File type Source | Python version None | Upload date | Hashes View |
Hashes for django_ulid-0.0.4-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 886be1fa873d28617a51cb0c1b4d9946fff30889ef031e546ac407d8160dbb74 |
|
MD5 | b6238e63a26e5a4ce1de8410b9b12e33 |
|
BLAKE2-256 | f6b6c42dcac423949ebbb7bd5fa33fed27e488270b76fc19b360345e7ed9b8a6 |