django admin框架使用系列之二:注册自定义类,并配置显示样式
By:Roy.LiuLast updated:2012-12-18
在上一片文章(django基本环境搭建),已经把django admin 的环境搭建起来了,但进入管理界面之后,只能看到系统自带的user,group 管理,还没有与自己业务相关的表等管理.所以这一讲的主要内容,就是讲如何注册自定义的类到admin中,配置admin 的display_list,显示的fileds,配置search框,配置filter过滤等.
预备工作
1. 在djangoadmin 工程中,创建app (myadmin), 命令行可以通过如下方式实现
如果是用eclipse+pydev的话,直接在djangoadmin这个app上点击右键,新建pydev package,然后自己新建models.py和views.py就可以了。其实说白了,就是创建一个文件夹,不过这个文件夹中包含一个空文件,名字叫__init__.py, 然后你可以在这个文件夹下创建models.py和views.py。
2.上面的步骤完成后,需要在settings.py 的 INSTALLED_APPS 中加入 'djangoadmin.myadmin'
配置与自己业务相关的类
1. 在models.py 中,写自己的model, 比如,有一个类别类:
然后运行 sync 会自动在数据库中生成表:myadmin_category,包含了在Category类中配置的字段.
2. 在myadmin 这个app,也就是这个目录下,新建一个admin.py 文件,内容如下:
整个工程图如下:
3. 运行工程,打开网页:http://127.0.0.1:8000/admin/ ,并登陆进去,如下图
你会发现自己定义的类已经显示了。点击就进入这个类的列表页面,在右上角有增加按钮,点击可以增加.
输入数据后,点击保存,返回到列表界面,你会发现,显示如下:
这不是我们希望看到的结果。
4. 配置我们想看到的结果.
上面显示的结果不是我们想要的,我们想要的是,在列表界面可以看到 categoryName,description 在各自的栏显示,另外,应该可以根据categoryName查询,可以根据 isValid 来过滤.另外在增加修改页面,不需要选择createDate,因为都时候默认当时时间. 那么这些要求如何实现呢。继续在admin.py中修改;
改成上面的代码之后,重新运行程序,你会发现,达到需要的效果了.
这样就是最终效果图.
还有一个地方,当在django admin 首页的时候,我们发现,category类显示如下:
可能这也不是你想要的,你想显示成其他的内容.可以在models中需该做到:
注意class Meta 中的内容. db_table 指定数据库中的表.verbose_name 表示名称,verbose_name_plural 表示复数名称,app_label就是显示app的名字。
这样就可以随意修改你的名字了。
代码下载:点击下载此文件
这是django admin 最基础的配置,后面还有定制化,界面更改等更复杂的学习。
预备工作
1. 在djangoadmin 工程中,创建app (myadmin), 命令行可以通过如下方式实现
python manage.py startapp myadmin
如果是用eclipse+pydev的话,直接在djangoadmin这个app上点击右键,新建pydev package,然后自己新建models.py和views.py就可以了。其实说白了,就是创建一个文件夹,不过这个文件夹中包含一个空文件,名字叫__init__.py, 然后你可以在这个文件夹下创建models.py和views.py。
2.上面的步骤完成后,需要在settings.py 的 INSTALLED_APPS 中加入 'djangoadmin.myadmin'
配置与自己业务相关的类
1. 在models.py 中,写自己的model, 比如,有一个类别类:
from django.db import models import time class Category(models.Model): id = models.AutoField(primary_key=True) categoryName = models.CharField(max_length=50) description = models.CharField(max_length=200) isValid = models.BooleanField(default = True) createDate = models.DateField(default = time.strftime('%Y-%m-%d'))
然后运行 sync 会自动在数据库中生成表:myadmin_category,包含了在Category类中配置的字段.
2. 在myadmin 这个app,也就是这个目录下,新建一个admin.py 文件,内容如下:
from django.contrib import admin from djangoadmin.myadmin.models import Category admin.site.register(Category)
整个工程图如下:
3. 运行工程,打开网页:http://127.0.0.1:8000/admin/ ,并登陆进去,如下图
你会发现自己定义的类已经显示了。点击就进入这个类的列表页面,在右上角有增加按钮,点击可以增加.
输入数据后,点击保存,返回到列表界面,你会发现,显示如下:
这不是我们希望看到的结果。
4. 配置我们想看到的结果.
上面显示的结果不是我们想要的,我们想要的是,在列表界面可以看到 categoryName,description 在各自的栏显示,另外,应该可以根据categoryName查询,可以根据 isValid 来过滤.另外在增加修改页面,不需要选择createDate,因为都时候默认当时时间. 那么这些要求如何实现呢。继续在admin.py中修改;
from django.contrib import admin from djangoadmin.myadmin.models import Category class CategoryAdmin(admin.ModelAdmin): #配置在list页面显示字段 list_display = ('categoryName','description') #配置查询字段 search_fields = ('categoryName',) #配置排序 ordering = ('-id',) #配置右边是否有过滤条件 list_filter = ('isValid',) #配置在新增,编辑页面中显示的字段 fields = ('categoryName','description') admin.site.register(Category,CategoryAdmin)
改成上面的代码之后,重新运行程序,你会发现,达到需要的效果了.
这样就是最终效果图.
还有一个地方,当在django admin 首页的时候,我们发现,category类显示如下:
可能这也不是你想要的,你想显示成其他的内容.可以在models中需该做到:
from django.db import models import time class Category(models.Model): id = models.AutoField(primary_key=True) categoryName = models.CharField(max_length=50) description = models.CharField(max_length=200) isValid = models.BooleanField(default = True) createDate = models.DateField(default = time.strftime('%Y-%m-%d')) class Meta: db_table = u'myadmin_category' verbose_name = u'分类管理' verbose_name_plural = u'分类管理' app_label = u'系统管理'
注意class Meta 中的内容. db_table 指定数据库中的表.verbose_name 表示名称,verbose_name_plural 表示复数名称,app_label就是显示app的名字。
这样就可以随意修改你的名字了。
代码下载:点击下载此文件
这是django admin 最基础的配置,后面还有定制化,界面更改等更复杂的学习。
From:一号门
Previous:django admin框架使用系列之一:配置djang admin环境
COMMENTS