python2.0_day18_django_admin

Django admin的个性化定制首先我们看下,前面章节中定义的models在admin后台管理界面的样子:

然后我们看下老男孩教育点名平台的admin管理表的后台界面样子:

admin管理后台常用的就是上面操作的这几种吧,我们来看下如何实现?

首先我们知道,使用admin后台管理表,需要将表注册到admins.py文件中:    from django.contrib import admin    # Register your models here.    from app01 import models    admin.site.register(models.Author)    # 注册进来    admin.site.register(models.Book)      # 注册进来    admin.site.register(models.Publisher)

这样就简单实现了图一中的管理界面.配置成图2的界面其实也很简单,在admins.py配置文件两步实现:    1.创建一个管理表单的admin类    2.将这个admin类在注册表的时候关联起来.

    class BookAdmin(admin.ModelAdmin):        list_display = (‘title‘,‘publisher‘,‘publication_date‘)  #指定显示的字段

    admin.site.register(models.Author)    admin.site.register(models.Book,BookAdmin)  # 注册的时候,把定义的BookAdmin类作为参数传入进来    admin.site.register(models.Publisher)保存后,访问http://127.0.0.1:8000/admin/app01/book/结果如下:

这里我们有一点关于显示Book表中定义的关于manytomany关系表的显示.    Django admin后台管理是不支持显示这种many_to_many关系的,如果你配置了,    class BookAdmin(admin.ModelAdmin):        list_display = (‘title‘,‘authors‘,‘publisher‘,‘publication_date‘)  #指定显示的字段    访问时会报如下错误:    <class ‘app01.admin.BookAdmin‘>: (admin.E109) The value of ‘list_display[1]‘ must not be a ManyToManyField.    为什么呢?    因为一行显示不了多个作者.并且这样显示,效率非常底,因为它要另外一张表一个一个查找出来.多一次查询.

了解了怎么实现个性化定制admin的方法.下面我们定义其他想图2中的配置.from django.contrib import admin

# Register your models here.from app01 import models

class BookAdmin(admin.ModelAdmin):    list_display = (‘id‘,‘title‘,‘publisher‘,‘publication_date‘)  #指定显示的字段    search_fields = (‘title‘,‘publisher__name‘) #添加搜索字段    # 这里我们定义了两个可以提供搜寻的字段 Book.title 和一个外键表.name    # 我们知道外键关联的是另外一个orm类,如果你想在本张表中通过搜索关联表字段来做帅选,是不是要搜外间表.Django admin里使用publisher__字段名 的方式实现了让你在当前表搜外键表的功能    list_filter = (‘publisher‘,‘publication_date‘) # 添加按照字段过滤的关键字list_filter    # 这里外键就可以直接写字段了.    list_editable = (‘title‘,‘publisher‘,‘publication_date‘)  #让后台界面上可以直接修改字段值的关键字定义list_editable    #这里注意Django admin后台默认显示的第一个表字段是不能修改的.    list_per_page = 10 # 让每页显示几条记录的设置

    filter_horizontal = (‘authors‘,)  #只针对多对多    raw_id_fields = (‘publisher‘,)    # 只针对外键的

admin.site.register(models.Author)admin.site.register(models.Book,BookAdmin)  # 注册的时候,把定义的BookAdmin类作为参数传入进来admin.site.register(models.Publisher)

首页里显示的东西差不多就这些定制.
访问页面看下效果:
接下来就是点到条目内的个性化定制    filter_horizontal = (‘authors‘,)  #只针对多对多    raw_id_fields = (‘publisher‘,)    # 只针对外键的我们看下效果:

   

Django的后台管理只适用内容管理,像监控平台这种不能用admin后台管理!!
时间: 2024-12-25 08:58:02

python2.0_day18_django_admin的相关文章

ubuntu下卸载python2和升级python3.5

卸载python只需一条语句就可以实现 sudu apt-get remove python ubuntu下安装python3 sudo apt-get install python3 但这样只安装了python3.4 要想使用python3.5,则必须升级python3.4 sudo add-apt-repository ppa:fkrull/deadsnakes sudo apt-get update sudo apt-get install python3.5 使用以上三行命令便可升级py

windows下同时安装Python2.7.10和3.5.0

1. 在Python官网下载两个最新版本的Python安装包:www.python.org Windows x86-64 executable installer Windows x86-64 MSI installer 分别安装在C:\Python35和C:\Python27 2. 在Path环境变量中检查以下4个变量(Path中的环境变量是以分号隔开的): 1) c:\Python27 2) c:\Python27\Scripts 3) c:\Python33 4) c:\Python33\

python2和python3中的编码问题

开始拾起python,准备使用python3, 造轮子的过程中遇到了编码的问题,又看了一下python3和python2相比变化的部分. 首先说个概念: unicode:在本文中表示用4byte表示的unicode编码,也是python内部使用的字符串编码方式. utf-8:在本文中指最少1byte表示的unicode编码方式 我在使用 if isinstance(key,unicode): key= key.encode('utf-8') 的时候,发现key值被转成了b'foo',b'bar'

Centos6.4上python2.6.6升级到2.7.6

好久不写博文了,本文没什么含金量,只是做一个记录.便于日后翻阅. 0.操作系统信息 [[email protected] ~]$ cat /etc/issue CentOS release 6.4 (Final) Kernel \r on an \m 1.当前python版本信息 [[email protected] bin]$ pwd /usr/bin [[email protected] bin]$ ll -a python -rwxr-xr-x. 2 root root 4864 2月 

zg手册 之 python2.7.7源码分析(4)-- pyc字节码文件

什么是字节码 python解释器在执行python脚本文件时,对文件中的python源代码进行编译,编译的结果就是byte code(字节码) python虚拟机执行编译好的字节码,完成程序的运行 python会为导入的模块创建字节码文件 字节码文件的创建过程 当a.py依赖b.py时,如在a.py中import b python先检查是否有b.pyc文件(字节码文件),如果有,并且修改时间比b.py晚,就直接调用b.pyc 否则编译b.py生成b.pyc,然后加载新生成的字节码文件 字节码对象

如何在CentOS6上安装Python2.7和Python3.3

原文来自http://toomuchdata.com/2014/02/16/how-to-install-python-on-centos/,个人觉得对在linux安装新版本Python是很有参考意义,因而转载,原文是英文的,本人简单翻译下,大家看懂即可,有不妥的地方请留言. 如何在CentOS 6上同时安装Python 2.7和Python 3.3 本文将介绍如何在CentOS 6上安装Python 2.7和3.3.下面以Python 2.7.6和Python 3.3.5为例进行说明,但本人实

CentOS 7安装Python3.5,并与Python2.7兼容并存

CentOS7默认安装了python2.7.5,当需要使用python3的时候,可以手动下载Python源码后编译安装. 1.安装python3.5可能使用的依赖 1 yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel 2.下载python wget "https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tgz&quo

Python2和Python3的一些语法区别

Python2和Python3的一些语法区别 python Python2和Python3的一些语法区别 1.print 2.input 3. python3版本相对2版本的部分其他区别 问题:为何会出现乱码的情况 问题:如何获取编码方式的信息? 问题:在控制台上看到的到底是什么? 1.print 在版本2的使用方法是: print 'this is version 2 也可以是 print('this is version 2') 但到了3,就只能加上括号,像一个函数一样来使用 print:

python2 与 python3的区别总结

python2 与 python3的区别总结 几乎所有的Python 2程序都需要一些修改才能正常地运行在Python 3的环境下.为了简化这个转换过程,Python 3自带了一个叫做2to3的实用脚本(Utility Script),这个脚本会将你的Python 2程序源文件作为输入,然后自动将其转换到Python 3的形式. 案例研究:将chardet移植到Python 3(porting chardet to Python 3)描述了如何运行这个脚本,然后展示了一些它不能自动修复的情况.这