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.

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

Apache 2.0

Dependencies

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 details)

Uploaded Source

Built Distribution

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

Uploaded Python 2 Python 3

File details

Details for the file django-ulid-0.0.4.tar.gz.

File metadata

  • Download URL: django-ulid-0.0.4.tar.gz
  • Upload date:
  • Size: 8.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.7.1

File hashes

Hashes for django-ulid-0.0.4.tar.gz
Algorithm Hash digest
SHA256 56c3b302c740d01c29677f65390c72648afbe3a3109e1077ddaac2add254cbb3
MD5 65a4d2212a1b0f27bc44a16179dcafc9
BLAKE2b-256 cc21a3c4d31defe114ab1c36337a9e8c91c88e9595736b216953e77b6f45444e

See more details on using hashes here.

File details

Details for the file django_ulid-0.0.4-py2.py3-none-any.whl.

File metadata

  • Download URL: django_ulid-0.0.4-py2.py3-none-any.whl
  • Upload date:
  • Size: 9.3 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.7.1

File hashes

Hashes for django_ulid-0.0.4-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 886be1fa873d28617a51cb0c1b4d9946fff30889ef031e546ac407d8160dbb74
MD5 b6238e63a26e5a4ce1de8410b9b12e33
BLAKE2b-256 f6b6c42dcac423949ebbb7bd5fa33fed27e488270b76fc19b360345e7ed9b8a6

See more details on using hashes here.

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