Skip to content

Commit 64bea2e

Browse files
committed
Enhanced json field in admin
1 parent 1d21b1e commit 64bea2e

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

iotserver/apps/device/admin.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
from django.contrib import admin, messages
22
from django.contrib.gis.db import models as gis_models
3+
from django.db import models
34
from django.utils.safestring import mark_safe
45
from mapwidgets.widgets import GooglePointFieldWidget
56

6-
from iotserver.apps.device import models
7+
from iotserver.apps.device import models, widgets
78

89

910
def toggle_devices_on(modeladmin, request, queryset):
@@ -57,6 +58,7 @@ class DeviceModelAdmin(admin.ModelAdmin):
5758
'ip_address',
5859
)
5960
list_filter = ('active', 'type__name', 'location__name')
61+
form_field_overrides = {models.JSONField: {'widget': widgets.PrettyJSONWidget}}
6062

6163

6264
@admin.register(models.DevicePin)

iotserver/apps/device/widgets.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
class PrettyJSONWidget:
2+
def format_value(self, value):
3+
import json
4+
try:
5+
parsed = json.loads(value)
6+
return json.dumps(parsed, indent=4, sort_keys=True)
7+
except (ValueError, TypeError):
8+
return value

0 commit comments

Comments
 (0)