django admin框架使用系列之二:注册自定义类,并配置显示样式

摘要: 在上一片文章(django基本环境搭建),已经把django admin 的环境搭建起来了,但进入管理界面之后,只能看到系统自带的user,group 管理,还没有与自己业务相关的表等管理.所以这一讲的主要内容,就是讲如何注册自定义的类到admin中,配置admin 的display_list,显示的fileds,配置search框,配置filter过滤等.

在上一片文章(django基本环境搭建),已经把django admin 的环境搭建起来了,但进入管理界面之后,只能看到系统自带的user,group 管理,还没有与自己业务相关的表等管理.所以这一讲的主要内容,就是讲如何注册自定义的类到admin中,配置admin 的display_list,显示的fileds,配置search框,配置filter过滤等.

预备工作
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 最基础的配置,后面还有定制化,界面更改等更复杂的学习。

上一篇: django admin框架使用系列之一:配置djang admin环境
下一篇: django admin框架使用系列之三:扩展user model

Avatar

大叔 评论于: 2012-12-20

呵呵,肥羊,你不是要改版吗?
怎么还没看到动工[face01]
[reply=轻舞肥羊,2012-12-20 08:09 PM]在考虑明年怎么带小孩的事呢,没心情写程序了。还是用开源博客吧。[/reply]
 评论 ( What Do You Think )
名称
邮箱
网址
评论
验证
   
 

 


  • 微信公众号

  • 我的微信

站点声明:

1、一号门博客CMS,由Python, MySQL, Nginx, Wsgi 强力驱动

2、部分文章或者资源来源于互联网, 有时候很难判断是否侵权, 若有侵权, 请联系邮箱:summer@yihaomen.com, 同时欢迎大家注册用户,主动发布无版权争议的 文章/资源.

3、鄂ICP备14001754号-3, 鄂公网安备 42280202422812号