Admin站点的使用(总结)

Admin站点

开启:python manage.py createsuperuser

按提示填写用户名邮箱 密码

 

在应用的admin.py中注册模型类

例: 打开booktest/admin.py文件注册地区模型

 

from django .contrib import admin

from models import *

admin.site.register(AreaInfo)

 

输入:http://127.0.0.1:8000/admin/

按提示填写用户名密码

登陆成功后可以看到Arealngos 可以进行增加修改 删除 查询

 

控制管理页展示

类modeladmin可以控制模型界面的展示(列表页、添加修改页的展示方式)

在booktest/admin.py中,注册模型类前定义管理类AreaAdmin

         Class AreaAdmin(admin.ModelAdmin):

                  Pass

 

管理类有两种使用方式(1注册参数2装饰器)

注册参数:打开booktest/admin.py文件

代码:  admin.site.register()

装饰器:打开booktest/admin.py文件 在管理器上注册模型类

代码:@admin.register(AreaInfo)

          Class AreaAdmin(admin.ModelAdmin):

                  Pass

 

列表页选项

页大小

         每页显示多少条数据 默认100

         打开booktest/admin.py文件 修改AreaAdmin类 (每页显示10条)

                  classAreaAdmin(admin.ModelAdmin):

                      list_per_page= 10 

 

 “操作选项”的位置

顶部显示的属性,设置为True(默认)在顶部显示,设置为False不在顶部显示

actions_on_top=True

底部显示的属性,设置为True在底部显示,设置为False(默认)不在底部显示

actions_on_bottom=False

打开booktest/admin.py文件,修改AreaAdmin类如下

classAreaAdmin(admin.ModelAdmin):

actions_on_top =True  actions_on_bottom = True

列表中的列

 

属性如下

list_display=[模型字段1,模型字段2,...]

打开booktest/admin.py文件,修改AreaAdmin类如下

classAreaAdmin(admin.ModelAdmin):

    ...

    list_display = ['id','atitle']

 

列标题

 

列标题默认为属性或方法的名称,可以通过属性设置

需要先将模型字段封装成方法,再对方法使用这个属性,

模型字段不能直接使用这个属性

short_description='列标题'

 

打开booktest/models.py文件,修改AreaInfo类如下

classAreaInfo(models.Model):

    ...

    title.short_description='区域名称'

 

关联对象

 

无法直接访问关联对象的属性或方法,可以在模型类中封装方法,访问关联对象的成员

打开booktest/models.py文件,修改AreaInfo类如下

classAreaInfo(models.Model):

    ...

    def parent(self):

        return self.aParent.atitle

    parent.short_description='父级区域名称'

 

打开booktest/admin.py文件,修改AreaAdmin类如下

classAreaAdmin(admin.ModelAdmin):

    ...

    list_display =['id','atitle','title','parent']

 

搜索框

 

属性如下,用于对指定字段的值进行搜索,支持模糊查询

search_fields=[]

列表类型,表示在这些字段上进行搜索

打开booktest/admin.py文件,修改AreaAdmin类如下

classAreaAdmin(admin.ModelAdmin):

    search_fields=['atitle']

中文标题

 

打开booktest/models.py文件,修改模型类,为属性指定verbose_name参数,即第一个参数

classAreaInfo(models.Model):

    atitle=models.CharField('标题',max_length=30)#名称

 

 

编辑页选项

显示字段顺序

       打开booktest/admin.py文件,修改AreaAdmin类如下

classAreaAdmin(admin.ModelAdmin):

    fields=['aParent','atitle']

在下拉列表中输出的是对象的名称,可以在模型类中定义str方法用于对象转换字符串

打开booktest/models.py文件,修改AreaInfo类,添加str方法

classAreaInfo(models.Model):

    def __str__(self):

        return self.atitle.encode('utf-8')

 

分组显示

 

属性如下

fieldset=(

    ('组1标题',{'fields':('字段1','字段2')}),

    ('组2标题',{'fields':('字段3','字段4')}),    )

打开booktest/admin.py文件,修改AreaAdmin类如下

classAreaAdmin(admin.ModelAdmin):

    # fields=['aParent','atitle']

    fieldsets = (

        ('基本', {'fields':['atitle']}),

        ('高级', {'fields':['aParent']})   )

注意: fields 与fieldsets两者选一使用

 

关联对象

 

在一对多的关系中,可以在一端的编辑页面中编辑多端的对象,嵌入多端对象的方式包括表格、块两种

类型InlineModelAdmin:表示在模型的编辑页面嵌入关联模型的编辑

子类TabularInline:以表格的形式嵌入

子类StackedInline:以块的形式嵌入

打开booktest/admin.py文件,创建AreaStackedInline类

classAreaStackedInline(admin.StackedInline):

    model = AreaInfo#关联子对象

    extra = 2#额外编辑2个子对象

打开booktest/admin.py文件,修改AreaAdmin类如下

classAreaAdmin(admin.ModelAdmin):

    ...

    inlines = [AreaStackedInline]

可以用表格的形式嵌入

打开booktest/admin.py文件,创建AreaTabularInline类

classAreaTabularInline(admin.TabularInline):

    model = AreaInfo#关联子对象

    extra = 2#额外编辑2个子对象

打开booktest/admin.py文件,修改AreaAdmin类如下

classAreaAdmin(admin.ModelAdmin):

    ...

    inlines = [AreaTabularInline]

 

 

你可能感兴趣的:(d)