Note
If you are new to hstore, please check django-hstore-field. The package builds on top of this to give an ergonomic implementation.
FormField that properly renders HStoreField Data in django Admin based on djangoauts package and an updated fork of django-admin-hstore-widget
- Python 3.10 and up
- Django 5.0 and up
- Modern browsers ( Chrome 112+, Firefox 117+, Safari 16.5+ )
Using pip:
pip install django-hstore-widget# settings.py
INSTALLED_APPS = [
...,
'django_hstore_widget',
...
]# yourmodel/forms.py
from django import forms
from django_hstore_widget.forms import HStoreFormField
from .models import Yourmodel
class MyModelAdminForm(forms.ModelForm):
my_hstore_field = HStoreFormField()
class Meta:
model = Yourmodel
# yourmodel/admin.py
from django.contrib import admin
from .models import Yourmodel
from .forms import MyModelAdminForm
@admin.register(Yourmodel)
class YourmodelAdmin(admin.ModelAdmin):
form = MyModelAdminForm| Feature | HStoreField |
JSONField |
|---|---|---|
| Requires PostgreSQL extension | ✅ | ❌ |
| Flat key–value support | ✅ | ✅ |
| Nested structure support | ❌ | ✅ |
| Supports non-string values | ❌ | ✅ |
| Simple key-value admin UI | ✅ | ❌ |
| Easy validation | ✅ | ❌ |
| Advanced JSON queries | ❌ | ✅ |
| Powerful containment queries | ❌ | ✅ |
| Smaller storage footprint | ✅ | ❌ |
| Suitable for metadata fields | ✅ | ✅ |
| Suitable for structured documents | ❌ | ✅ |
