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

在上一片文章(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 最基础的配置,后面还有定制化,界面更改等更复杂的学习。

除非申明,文章均为一号门原创,转载请注明本文地址,谢谢!
[本日志由 轻舞肥羊 于 2012-12-18 10:16 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: django admin框架使用系列之二:注册自定义类 并配置显示样式
相关日志:
评论: 1 | 引用: 0 | 查看次数: -
回复回复大叔[2012-12-20 09:12 AM | del]
呵呵,肥羊,你不是要改版吗?
怎么还没看到动工
回复来自 轻舞肥羊 的评论 轻舞肥羊 于 2012-12-20 08:09 PM 回复
在考虑明年怎么带小孩的事呢,没心情写程序了。还是用开源博客吧。
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.