# django-nativeshortuuidfield
[](https://github.com/foundertherapy/django-nativeshortuuidfield/actions/workflows/tests.yml)
[](https://github.com/foundertherapy/django-nativeshortuuidfield/actions/workflows/linters.yml)
Provides a NativeShortUUIDField for your Django models which uses the base-57 "Short UUID" package at https://github.com/stochastic-technologies/shortuuid/ to be used in Python
and store it as full UUID in database.
## Installation
Install it with pip (or easy_install):
```bash
$ pip install django-nativeshortuuidfield
```
## Usage
First you'll need to add a NativeShortUUIDField to your class:
```python
from native_shortuuid import NativeShortUUIDField
class MyModel(models.Model):
uuid = NativeShortUUIDField(unique=True, default=uuid.uuid4)
```
If you want to add the ability to search by shortuuid in `ModelAdmin` you need to inherit `NativeUUIDSearchMixin`
```python
from native_shortuuid.admin import NativeUUIDSearchMixin
@admin.register(models.MyModel)
class MyModelAdmin(NativeUUIDSearchMixin, admin.ModelAdmin):
search_fields = ('uuid', )
```
If you want to have to ability to write your own uuid search fields list
```python
from native_shortuuid.admin import NativeUUIDSearchMixin
@admin.register(models.MyModel)
class MyModelAdmin(NativeUUIDSearchMixin, admin.ModelAdmin):
admin_auto_extract_uuid_search_fields = False
search_fields = ('name', )
search_uuid_fields = ['uuid', 'foreign_model__uuid']
```
Enjoy!
## Settings
* `ADMIN_AUTO_EXTRACT_UUID_SEARCH_FIELDS`: default `True`
+ This setting is to autofill `search_uuid_fields` in the ModelAdmins that inherits `NativeUUIDSearchMixin`
with all shortuuid fields that are in the `search_fields` array.
if you turned it off, you'll need to define `search_uuid_fields` on you ModelAdmin in order to search on shortuuid fields
## Notes
* NativeShortUUIDField is a subclass of django.db.models.UUIDField
* You can pass usual Django UUIDField parameters on init, although some of them are added/overwritten:
+ blank=True, editable=False (set auto=False to remove these fields enforcement)
### Contribution Notes
#### Pull Request
* Increase the version number in the `setup.py` to the new version that the new pull request represents.
#### Publishing the Package
After the pull request gets merged into the master branch a new release should be created
* Create a new tag with the same version number you updated the `setup.py` with:
```bash
$ git checkout master
$ git tag -a 2.1.0 -m 'fix importing order'
$ git push origin 2.1.0
```
* Go to GitHub's releases section and create a new release:
+ Chose the tag version that you just created
+ Fill the release title with the same version number
+ Add a description of the release and publish it
Raw data
{
"_id": null,
"home_page": "https://github.com/foundertherapy/django-nativeshortuuidfield",
"name": "django-nativeshortuuidfield",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "shortuuid, uuid, nativeshortuuid",
"author": "Laith Abu Zainih",
"author_email": "Laith Abu Zainih <systems@foundertherapy.co>",
"download_url": "https://files.pythonhosted.org/packages/8c/b9/360c544bc96d685f7d013c0a15a9d59038df2d8ba2538ea363f65aaac50e/django_nativeshortuuidfield-1.4.11.tar.gz",
"platform": null,
"description": "# django-nativeshortuuidfield\n\n[](https://github.com/foundertherapy/django-nativeshortuuidfield/actions/workflows/tests.yml)\n[](https://github.com/foundertherapy/django-nativeshortuuidfield/actions/workflows/linters.yml)\n\nProvides a NativeShortUUIDField for your Django models which uses the base-57 \"Short UUID\" package at https://github.com/stochastic-technologies/shortuuid/ to be used in Python\nand store it as full UUID in database.\n\n## Installation\n\nInstall it with pip (or easy_install):\n```bash\n$ pip install django-nativeshortuuidfield\n```\n\n## Usage\n\nFirst you'll need to add a NativeShortUUIDField to your class:\n```python\nfrom native_shortuuid import NativeShortUUIDField\n\nclass MyModel(models.Model):\n uuid = NativeShortUUIDField(unique=True, default=uuid.uuid4)\n```\n\nIf you want to add the ability to search by shortuuid in `ModelAdmin` you need to inherit `NativeUUIDSearchMixin`\n```python\nfrom native_shortuuid.admin import NativeUUIDSearchMixin\n\n@admin.register(models.MyModel)\nclass MyModelAdmin(NativeUUIDSearchMixin, admin.ModelAdmin):\n search_fields = ('uuid', )\n``` \n\nIf you want to have to ability to write your own uuid search fields list\n```python\nfrom native_shortuuid.admin import NativeUUIDSearchMixin\n\n@admin.register(models.MyModel)\nclass MyModelAdmin(NativeUUIDSearchMixin, admin.ModelAdmin):\n admin_auto_extract_uuid_search_fields = False\n search_fields = ('name', )\n search_uuid_fields = ['uuid', 'foreign_model__uuid']\n``` \n\n\nEnjoy!\n\n## Settings\n* `ADMIN_AUTO_EXTRACT_UUID_SEARCH_FIELDS`: default `True`\n + This setting is to autofill `search_uuid_fields` in the ModelAdmins that inherits `NativeUUIDSearchMixin` \n with all shortuuid fields that are in the `search_fields` array.\n if you turned it off, you'll need to define `search_uuid_fields` on you ModelAdmin in order to search on shortuuid fields\n \n## Notes\n\n* NativeShortUUIDField is a subclass of django.db.models.UUIDField\n\n* You can pass usual Django UUIDField parameters on init, although some of them are added/overwritten:\n + blank=True, editable=False (set auto=False to remove these fields enforcement)\n\n### Contribution Notes\n\n#### Pull Request\n* Increase the version number in the `setup.py` to the new version that the new pull request represents.\n\n#### Publishing the Package\nAfter the pull request gets merged into the master branch a new release should be created\n\n* Create a new tag with the same version number you updated the `setup.py` with:\n ```bash\n $ git checkout master\n $ git tag -a 2.1.0 -m 'fix importing order'\n $ git push origin 2.1.0\n ```\n\n* Go to GitHub's releases section and create a new release:\n + Chose the tag version that you just created\n + Fill the release title with the same version number\n + Add a description of the release and publish it\n",
"bugtrack_url": null,
"license": null,
"summary": "A decoder/encoder Field for uuid",
"version": "1.4.11",
"project_urls": {
"Homepage": "https://github.com/foundertherapy/django-nativeshortuuidfield"
},
"split_keywords": [
"shortuuid",
" uuid",
" nativeshortuuid"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "1f3b2948466c6c9a0e7df7fe83d8a36ebfdf3e57ce92e1ed98eb45be3dad08dc",
"md5": "62e97f2242c5a03e26157514ecedc368",
"sha256": "21236a82c904602aa89887f625512f388f2e0b7a51aaf89fd535e26cc3350e2f"
},
"downloads": -1,
"filename": "django_nativeshortuuidfield-1.4.11-py3-none-any.whl",
"has_sig": false,
"md5_digest": "62e97f2242c5a03e26157514ecedc368",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 13608,
"upload_time": "2025-07-28T23:23:47",
"upload_time_iso_8601": "2025-07-28T23:23:47.557167Z",
"url": "https://files.pythonhosted.org/packages/1f/3b/2948466c6c9a0e7df7fe83d8a36ebfdf3e57ce92e1ed98eb45be3dad08dc/django_nativeshortuuidfield-1.4.11-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8cb9360c544bc96d685f7d013c0a15a9d59038df2d8ba2538ea363f65aaac50e",
"md5": "72ddbbe4e6eb9fefa1421fd9baeb9e9f",
"sha256": "e2a2ce2d668b9d604c76640e8a2b6f33cae6481a14d5fe86012a5f232cb87a13"
},
"downloads": -1,
"filename": "django_nativeshortuuidfield-1.4.11.tar.gz",
"has_sig": false,
"md5_digest": "72ddbbe4e6eb9fefa1421fd9baeb9e9f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 11789,
"upload_time": "2025-07-28T23:23:48",
"upload_time_iso_8601": "2025-07-28T23:23:48.407982Z",
"url": "https://files.pythonhosted.org/packages/8c/b9/360c544bc96d685f7d013c0a15a9d59038df2d8ba2538ea363f65aaac50e/django_nativeshortuuidfield-1.4.11.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-28 23:23:48",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "foundertherapy",
"github_project": "django-nativeshortuuidfield",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "django-nativeshortuuidfield"
}