django-uidfield is a library which includes class UIDField for models.
Project description
About
Pretty UID fields for your Django models, with customizable prefixes and controlled length. Tested against Python 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 and Django 2.2, 3.1, 3.2, 4.0, 4.1, 4.2, 5.0, 5.1.
Usage
See examples below. You can optionally inherit your models from UIDModel, which gracefully handles IntegrityError on saving UIDs, making up to 3 attempts with random UIDs. Integrity errors should be pretty rare if you use large enough max_length on your fields, but you may still want to use it for extra safety:
from django_uidfield.fields import UIDField
class YourModel(models.Model):
uid_field = UIDField(prefix='tmp_', max_length=20)
# the value will be like 'tmp_Akw81LmtPqS93dKb'
or:
from django_uidfield.models import UIDModel
from django_uidfield.fields import UIDField
class YourModel(UIDModel):
uid_field = UIDField(prefix='tmp_', max_length=20)
Adding a UIDField to an existing model
You can populate the field with a data-migration:
def populate_uid(apps, schema_editor):
User = apps.get_model("users", "User")
for user in User.objects.all():
user._meta.get_field("uid").populate(user, force_renew=True)
user.save()
class Migration(migrations.Migration):
operations = [migrations.RunPython(code=populate_uid)]
Note that the 3-attempt deduplication mechanism will not work, and you can get an error if you have a lot of objects and a small max_length.
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file django_uidfield-0.3.5.tar.gz.
File metadata
- Download URL: django_uidfield-0.3.5.tar.gz
- Upload date:
- Size: 5.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ce180adc4b70ad0049b3668d025ee69b2b5374f1484fde7e17f8332ab7014a7f
|
|
| MD5 |
247156e8d9f60e035e9497f4bdb1dc80
|
|
| BLAKE2b-256 |
4fddb79633e08ace69355986f0000075a82716a33125cc25d7101ff1e32c6035
|
File details
Details for the file django_uidfield-0.3.5-py3-none-any.whl.
File metadata
- Download URL: django_uidfield-0.3.5-py3-none-any.whl
- Upload date:
- Size: 6.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
94cbf5adaa3a0e9c7b5e32178e1fc69bcc51d4050c2b51c9f1577850f34bb584
|
|
| MD5 |
e23426cd146fb65f8927ed84382ff7a7
|
|
| BLAKE2b-256 |
33f1c17db33ce7677241222b02389922142d83bbbc620b46e6dcf7a7c97f49f1
|