python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Django admin显示json

Django admin显示json字段方法详解

作者:alue

这篇文章主要为大家介绍了Django admin显示json字段方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

默认的 json 显示

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

这里给出一个不依赖于第三方库的处理方法。思路是,用自定义 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字段方法详解的详细内容,更多关于Django admin显示json的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文