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.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b232e0a45343aa44576e171e312949e22e38a5447f39d03a24eff3af3d7e3a9c |
|
MD5 | caf7226ba9a7eae94e8744c2b1543381 |
|
BLAKE2b-256 | ad41b3196743028b17fa4f4e4423b1ee5a15809f0820637d11dc614e956c6573 |