美文网首页
Django admin 显示 json 字段

Django admin 显示 json 字段

作者: alue | 来源:发表于2023-04-24 17:12 被阅读0次

如图所示,如果 Django 模型中含有 json 字段, 在 admin 后台默认的显示非常混乱,不利于数据维护。 那么有什么好的方式呢?


默认的 json 显示

这里给出一个不依赖于第三方库的处理方法。思路是,用自定义 JSON widget 代替 admin 默认的 text_input.

定义 widget 类如下:

import json  
  
from django.contrib import admin  
from django.db.models import JSONField  
from django.forms import widgets  
  
  
class PrettyJSONWidget(widgets.Textarea):  
  
    def format_value(self, value):  
        try:  
            value = json.dumps(json.loads(value), indent=2, sort_keys=True)  
            row_lengths = [len(r) for r in value.split('\n')]  
            self.attrs['rows'] = min(max(len(row_lengths) + 2, 10), 30)  
            self.attrs['cols'] = min(max(max(row_lengths) + 2, 40), 120)  
            return value  
        except Exception as e:  
  
            return super(PrettyJSONWidget, self).format_value(value)

使用 widget 的方式:我们继承 admin.ModelAdmin,并且覆盖 JSONField 的 widget:

class JsonAdmin(admin.ModelAdmin):  
    formfield_overrides = {  
        JSONField: {'widget': PrettyJSONWidget}  
    }

admin.site.register(MyModel, JsonAdmin)

这样配置后,json 字段的显示如下:


优化之后的 json 显示

可以看出, 此时的 json 字段更加利于阅读和修改。

相关文章

网友评论

      本文标题:Django admin 显示 json 字段

      本文链接:https://www.haomeiwen.com/subject/phgujdtx.html