• django 之admin使用


    Admin注册

    内容发布的部分由网站的管理员负责查看、添加、修改、删除数据,开发这些重复的功能是一件单调乏味、缺乏创造力的工作,为此,Django能够根据定义的模型类自动地生成管理模块。

    1)准备工作:创建管理员的用户名和密码。

    python manage.py createsuperuser

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

    2)使用:在应用的admin.py中注册模型类

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

    from django.contrib import admin

    from models import *

    admin.site.register(AreaInfo)

    3)输入如下网址:

    http://127.0.0.1:8000/admin/进行登录

    登录成功后,可以进行增加、修改、删除、查询的管理。

    控制管理页展示

    类ModelAdmin可以控制模型在Admin界面中的展示方式,主要包括在列表页的展示方式、1,添加修改页的展示方式。

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

    class AreaAdmin(admin.ModelAdmin):

        pass

    管理类有两种使用方式:,

    注册参数

    装饰器

    注册参数:打开booktest/admin.py文件,注册模型类代码如下:

    admin.site.register(AreaInfo,AreaAdmin)

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

    @admin.register(AreaInfo)  #在django1.7之后新增

    class AreaAdmin(admin.ModelAdmin):

    pass 

    2,admin页面汉化

    admin页面都是以英文展示的,若要转化为汉语,在setting中设置

    1. LANGUAGE_CODE = 'zh-hans'
    2. TIME_ZONE = 'Asia/Shanghai'

    不同的django版本有不同的设置方式,出问题可参考官网

    3,列表页选项

    每页中显示多少条数据,默认为每页显示100条数据,属性如下:

    list_per_page=100

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

    class AreaAdmin(admin.ModelAdmin):

    list_per_page = 10

    4,"操作选项"的位置

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

    actions_on_top=True

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

    actions_on_bottom=False

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

    class AreaAdmin(admin.ModelAdmin):

        ...

        actions_on_top = True

    actions_on_bottom = Truehi

    5,按时间导航栏

    date_hierarchy设置为在models中的datafield或者datatimefield字段名,更改列表按照时间段下来的导航,如果时间都在一个月内,按照天级别数据

                  date_hierarchy = 'pub_date'

    5,列表中的列

    属性如下:

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

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

    class AreaAdmin(admin.ModelAdmin):

        ...

        list_display = ['id','atitle']

    点击列头可以进行升序或降序排列。

    #ordering设置默认排序字段,负号表示降序排序

        ordering = ('-publish_time',)

    #list_editable 设置默认可编辑字段

        list_editable = ['machine_room_id', 'temperature']

    #fk_fields 设置显示外键字段

         fk_fields = ('machine_room_id',)

    6,右侧栏过滤器

    属性如下,只能接收字段,会将对应字段的值列出来,用于快速过滤。一般用于有重复值的字段。

    list_filter=[]

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

    class AreaAdmin(admin.ModelAdmin):

        ...

    list_filter=['atitle']

    7,搜索框

    属性如下,用于对指定字段的值进行搜索,支持模糊查询。列表类型,表示在这些字段上进行搜索。

    search_fields=[]

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

    class AreaAdmin(admin.ModelAdmin):

        ...

        search_fields=['atitle']

    8,中文标题

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

    class AreaInfo(models.Model):

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

        ...

      

    9,编辑页选项

    显示字段顺序(通过以下的射值可以改变编辑页顺序显示的顺序)

    属性如下:

    fields=()

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

    class AreaAdmin(admin.ModelAdmin):

        ...

    fields=('aParent','atitle')

    每一个字段使用一行,如果想一行显示多个字段,则将哪些字段打包到一个元组中

    也可以使用exclude来排除某一个字段

    属性如下:

    Exclude=()

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

    class AreaAdmin(admin.ModelAdmin):

        ...

        exclude=(‘id’)

    注意:fields和exclude是能二选一使用

    可以使用fieldset来设置,可以分成不同的栏目,而且比较简洁,属性如下:

    fieldset=(

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

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

    )

    标题为None,则页面没有标题

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

    class AreaAdmin(admin.ModelAdmin):

        ...

        # fields=('aParent','atitle')

        fieldsets = (

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

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

    )

    说明:fields与fieldsets两者选一使用。

    10,关联对象

    在一对多的关系中,可以在一端的编辑页面中编辑多端的对象,嵌入多端对象的方式包括表格、块两种。 类型InlineModelAdmin:表示在模型的编辑页面嵌入关联模型的编辑。子类TabularInline:以表格的形式嵌入。

    子类StackedInline:以块的形式嵌入。

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

    class AreaStackedInline(admin.StackedInline):

        model = AreaInfo#关联子对象

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

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

    class AreaAdmin(admin.ModelAdmin):

        ...

        inlines = [AreaStackedInline]

    可以用表格的形式嵌入。

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

    class AreaTabularInline(admin.TabularInline):

        model = AreaInfo#关联子对象

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

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

    class AreaAdmin(admin.ModelAdmin):

        ...

        inlines = [AreaTabularInline]

  • 相关阅读:
    查询是哪个进程占用了特定端口
    (面向c#开发人员) 编写javascript的好习惯一 false 值
    onerror 事件 如何使用 onerror 事件捕获网页中的错误。(chrome、opera、safari 浏览器不支持)
    查找url里面的flag元素判断操作
    jquery 弹出窗
    向上滚动
    kissy helpcenter
    kissyAPI
    IE6 动态创建 iframe 无法显示的 bug 芒果
    图片轮换动画仿GIF
  • 原文地址:https://www.cnblogs.com/hellowcf/p/7453116.html
Copyright © 2020-2023  润新知