生成 Django 后台的字段以生成的 HTML 代码显示
不多说,上代码
文件: log/models.py
import json
from django.utils.html import format_html
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class History(models.Model):
model = models.CharField('数据模型', max_length=50)
pkey = models.IntegerField('记录号')
json = models.TextField('JSON 数据')
log_time = models.DateTimeField('记录时间', auto_now_add=True)
class Meta:
verbose_name_plural = verbose_name = '历史记录'
def __str__(self):
return '%s(%s)' % (self.model, self.pk)
def natural_json(self):
"""in template file, use <pre>{{ object.natural_json }}</pre> to show natural json data. """
return format_html('<pre>{}</pre>', json.dumps(json.loads(self.json), indent=4,
ensure_ascii=False, sort_keys=True))
natural_json.short_description = 'JSON 格式文本'
natural_json.allow_tags = True
natural_json
是虚拟出来的字段,显示这个字段时,显示的是经过转换成 html 代码的代码,这里是用 <pre>
原样显示一个格式后的 json
文本。
文件: log/admin.py
from django.contrib import admin
from .models import *
# Register your models here.
@admin.register(History)
class HistoryAdmin(admin.ModelAdmin):
list_display = ('model', 'pkey', 'json', 'log_time')
fields = ('model', 'pkey', 'natural_json', 'log_time')
readonly_fields = ('model', 'pkey', 'natural_json', 'log_time')
进到编辑页面 natural_json
字段显示出来的效果:
[
{
"fields": {
"bar_code": "11100011",
"brand": 1,
"card_no": "134100000012",
"cpu": "1G",
"display_card": "Nv5700",
"hard_disk": "500G",
"ip": "10.142.179.238",
"mac": "1234.1234.1234",
"memory": "4G",
"model": "MT8400",
"modified_time": "2016-12-20T15:42:18.430Z",
"modifier": 1,
"net_range": 1,
"position": "1705",
"production_date": "2012-12-20",
"remark": "",
"sn": "11100011",
"source": 1,
"staff": 96,
"status": 1,
"type": 111,
"user": "张三/信息公司"
},
"model": "device.pcdevice",
"pk": 2
}
]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: Django 开发知识点
下一篇: 彻底找到 Tomcat 启动速度慢的元凶
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论