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]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值