Non-intrusive hashids library Django
Project description
Django Hashids
django-hashids is a simple and non-intrusive hashids library for Django. It acts as a model field, but it does not touch the database or change the model.
Install
pip install django-hashids
django-hashids
is tested with Django 1.11, 2.2, 3.0, 3.1 and python 3.6, 3.7, 3.8, 3.9.
Usage
Add HashidsField
to any model
class TestModel(Model):
hashid = HashidsField(real_field_name="id")
TestModel.hashid
field will proxy TestModel.id
field but all queries will return and receive hashids strings. TestModel.id
will work as before.
Examples
instance = TestModel.objects.create()
instance2 = TestModel.objects.create()
instance.id # 1
instance2.id # 2
# Allows access to the field
instance.hashid # '1Z'
instance2.hashid # '4x'
# Allows querying by the field
TestModel.objects.get(hashid="1Z")
TestModel.objects.filter(hashid="1Z")
TestModel.objects.filter(hashid__in=["1Z", "4x"])
TestModel.objects.filter(hashid__gt="1Z") # same as id__gt=1, would return instance 2
# Allows usage in queryset.values
TestModel.objects.values_list("hashid", flat=True) # ["1Z", "4x"]
TestModel.objects.filter(hashid__in=TestModel.objects.values("hashid"))
Config
The folloing attributes can be added in settings file to set default arguments of HashidsField
:
DJANGO_HASHIDS_SALT
: default saltDJANGO_HASHIDS_MIN_LENGTH
: default minimum lengthDJANGO_HASHIDS_ALPHABET
: default alphabet
HashidsField
does not reqiure any arguments but the followinig arguments can be supplied to modify its behavior.
Name | Description |
---|---|
real_field_name |
The proxied field name |
hashids_instance |
The hashids instance used to encode/decode for this field |
salt |
The salt used for this field to generate hashids |
min_length |
The minimum length of hashids generated for this field |
alphabet |
The alphabet used by this field to generate hashids |
The argument hashids_instance
is mutually exclusive to salt
, min_length
and alphabet
. See hashids-python for more info about the arguments.
Some common Model arguments such as verbose_name
are also supported.
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.
Source Distribution
Built Distribution
Hashes for django_hashids-0.4.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 00c3ec6ce3080bd90ed7e3d75c21ee54217917ed78b6c19d6179e7a360c82dff |
|
MD5 | ba2c830f93a2bf71338df6004582cd30 |
|
BLAKE2b-256 | 791fc0a90a2853f5363f1992998bf9a035b126842eb25a9e5f6e57b83f6e5bb5 |