Django中Admin样式定制
Django自带的admin在展示数据是样式有点单一,我们可以自己定义数据的展示样式。
一、自定义数据展示样式
1、后台查询书记列表时,同时列出出版社和出版时间:
admin.py文件
from django.contrib import admin import models class BookAdmin(admin.ModelAdmin):
list_display = ('name','publisher','publication_date') #展示 admin.site.register(models.Author)
admin.site.register(models.Publisher)
admin.site.register(models.Book,BookAdmin)
这样,展示效果如下图:
2、添加搜索框
admin.py
from django.contrib import admin import models class BookAdmin(admin.ModelAdmin):
list_display = ('name','publisher','publication_date')
search_fields = ('name','publisher__name') #搜索,'__'表示需要关连到其他表中查询 admin.site.register(models.Author)
admin.site.register(models.Publisher)
admin.site.register(models.Book,BookAdmin)
这样,就有搜索框了:
3、添加过滤器
admin.py
from django.contrib import admin import models class BookAdmin(admin.ModelAdmin):
list_display = ('name','publisher','publication_date')
search_fields = ('name','publisher__name')
list_filter = ('name','publisher','publication_date') #过滤 admin.site.register(models.Author)
admin.site.register(models.Publisher)
admin.site.register(models.Book,BookAdmin)
这样,在admin页面的右侧就添加了一个过滤器
4、编辑每行字段
admin.py
from django.contrib import admin import models class BookAdmin(admin.ModelAdmin):
list_display = ('id','name','publisher','publication_date')
search_fields = ('name','publisher__name')
list_filter = ('name','publisher','publication_date')
list_editable = ('name','publisher','publication_date') #可编辑的字段,注意,默认第一个字段不可编辑,因此添加'id'为第一个字段 admin.site.register(models.Author)
admin.site.register(models.Publisher)
admin.site.register(models.Book,BookAdmin)
效果如下:
5、设置每页显示的条数
admin.py
BookAdmin类中添加
list_per_page = 10
6、如果选项太多,可以先搜索,然后再添加
admin.py
filter_horizontal = ('authors',)
现实效果为:
二、Admin中Actions
给book新添加一个状态,表示出版和未出版,让其显示在admin里书籍的页面中。
1、在models中book类下添加status字段
class Book(models.Model):
name = models.CharField(max_length=100)
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
publication_date = models.DateField() status_choices=(
('published','已出版'),
('publishing','未出版'),
('forbidden','禁止出版'),
) status = models.CharField(choices=status_choices,max_length=32,default='publishing') #default字段必须添加,否则同步数据库会出错,默认为未出版 def __unicode__(self):
return self.name
class Meta:
verbose_name_plural='书籍名称'
2、同步数据库
sudo python manage.py makemigrations sudo python manage.py migrate
然后在amdin中book信息显示叶就多了status的选项:
3、显示数据信息时,将状态显示出来
admin.py
class BookAdmin(admin.ModelAdmin):
list_display = ('id','name','publisher','publication_date','status')
默认每本书的状态都是'未出版',如果现在要批量修改为'已出版'或者'禁止出版',就要使用action了。
在actions中添加已出版和禁止出版选项,然后不同的状态显示不同的背景颜色。
models.py
#!_*_ coding:utf-8 _*_
from __future__ import unicode_literals
from django.db import models
from django.utils.html import format_html #format_html是将html代码传给admin时依html格式显示,否则只显示本身字符串
class Book(models.Model):
name = models.CharField(max_length=100)
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
publication_date = models.DateField()
status_choices=(
('published',u'已出版'),
('publishing',u'未出版'),
('forbidden',u'禁止出版'),
)
status = models.CharField(choices=status_choices,max_length=32,default='publishing')
def __unicode__(self):
return self.name
class Meta:
# 显示中文
verbose_name_plural=u'书籍名称' def status_color(self):
if self.status=='published':
format_td=format_html('<span style="padding:2px;background-color:yellowgreen;color:white">已出版</span>')
if self.status=='publishing':
format_td=format_html('<span style="padding:2px;background-color:pink;color:white">未出版</span>')
if self.status=='forbidden':
format_td=format_html('<span style="padding:2px;background-color:orange;color:white">禁止出版</span>')
return format_td #将html样式传递给admin展示页面 status_color.short_description='status' #admin展示时名称为status(一个别名)
admin.py
def make_published(modelAdmin,request,queryset): #queryset是选中的对象的集合
queryset.update(status='published')
make_published.short_description='出版' def make_forbidden(modelAdmin,request,queryset):
queryset.update(status='forbidden')
make_forbidden.short_description='禁止出版' class BookAdmin(admin.ModelAdmin):
list_display = ('id','name','publisher','publication_date','status_color') #添加model中新定义的函数status_color,在admin中显示出来
search_fields = ('name','publisher__name')
list_filter = ('name','publisher','publication_date')
list_editable = ('name','publisher','publication_date')
filter_horizontal = ('authors',)
actions = [make_published,make_forbidden] #action中显示的选项
效果如下:
这样就可以批量的修改了。
Django中Admin样式定制的更多相关文章
- Django 中 admin 的执行流程
Django 中 admin 的执行流程 1 循环加载执行所有已经注册的 app 中的 admin.py 文件 def autodiscover(): autodiscover_modules('ad ...
- django中admin的使用
转载网址:https://www.cnblogs.com/wumingxiaoyao/p/6928297.html Django自带的后台管理是Django明显特色之一,可以让我们快速便捷管理 ...
- Django的admin样式丢失【静态文件收集】
在部署完Django项目后,进行admin后台登录发现样式丢失,后台日志显示:js和css文件丢失 解决办法: 配置settings.py如下: #DEBUG打开时,app的静态文件默认从这里读取 S ...
- Django 中Admin站点的配置
Admin站点是django提供的一个后台管理页面,可以用来对用户与数据库表数据进行管理. Admin站点配置流程 1.在settings.py文件中INSTALL_APPS列表中添加django.c ...
- django中admin一些方法
1.概述:内容发布,负责添加,修改,删除内容及公告访问2.配置admin应用在settings文件中INSTALLED_APPS添加:'django.contrib.admin', 默认是已经添加好的 ...
- django中admin
我们在models中建立了表结构,想要在admin中表示: from django.contrib import admin from . import models for table in mod ...
- django中admin路由系统工作原理
一.如图所示 from django.contrib import admin from . import models class zhangsan(admin.ModelAdmin): list_ ...
- Django 中自定义 Admin 样式与功能
目录 自定义 Admin 样式与功能 1 页面修改中文 1.1 语言设置为中文 1.2 应用管理设置为中文 1.3 数据库表设置为中文 1.4 数据库表字段名称修改为中文 2 修改后台样式 2.1 安 ...
- django中的django admin插件
一.django admin前言 1.admin的作用 为了方便后台开发者快速的部署测试环境,于是就产生了admin,admin主要是操作models中的类从而实现对数据库中的数据增删改查的操作. 2 ...
随机推荐
- 修改cookie
查看本地cookie方法一:点击 地址栏前面的 感叹号 !方法一:F12-->network->回车 请求一下 地址栏-->.出现的地址-->点击. header cookie ...
- 啥数据类型set补充、深浅拷贝与函数
#s1 = {1,2,3,1} """ s2 = ([2,5,6]) print(s1) s1.add(5) #添加元素"5" print(s1) s ...
- Spark编程模型及RDD操作
转载自:http://blog.csdn.net/liuwenbo0920/article/details/45243775 1. Spark中的基本概念 在Spark中,有下面的基本概念.Appli ...
- Pass和ClassPath变量配置
1.pass环境变量配置的是可执行性文件bin目录,是为了在任意盘符下都可以运行javac.exe和java.exe所配置的. 2.classpath环境变量记录的是java类运行文件所在的目录,一般 ...
- layer ifram 弹出框
父层 <div class="col-xs-4 text-left" style="padding-left: 50px;"><button ...
- C#异常性能影响
何谓异常 很多人在讨论异常的时候很模糊,仿佛所谓异常就是try{}catch{},异常就是Exception,非常的片面,所以导致异常影响性能,XXXX……等很多奇怪的言论,所以在此我意在对异常正名. ...
- webAPI---发布(IIS)--发布遇到问题(500.19,500.21,404.8,404.3)
WebAPI的内容部分直接转自官方文档,英语水平有限,不做翻译, 发布网站在本文的后半部分 HTTP is not just for serving up web pages. It is also ...
- GoogleCodeJam
2016年没有参赛,在师兄的介绍下,试了一下简单的一题,需要注意的是读写数据的形式还有具体代码. 2016资格赛 A题 Problem Bleatrix Trotter the sheep has d ...
- centos6.8安装superctl 后台管理工具
下载安装python yum install python-setuptools 从官网下载supervisor包 https://pypi.python.org/pypi/supervisor 解压 ...
- python入门必备知识总结
人生苦短,我用python.看图说话 一.python简介与发展: python 是一种面向对象的解释性计算机程序设计语言. python由荷兰人Guido van Rossum 于1989年发明. ...