Django中admin后台管理常用设置系列之十六

来源:互联网 发布:java 网络流量监控 编辑:程序博客网 时间:2024/06/06 00:02

定义

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

在Django项目中默认启用Admin管理站点

  • 创建管理员的用户名和密码

    python manage.py createsuperuser

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

模型类代码

from django.db import modelsclass AreaInfo(models.Model):    #地区名,给模型字段设置标题用verbose_name    atitle = models.CharField(verbose_name='标题', max_length=20)     #关系属性, 自关联    aParent = models.ForeignKey('self', null=True, blank=True)     # 模型类中封装方法,访问关联对象title的成员    def title(self):        return self.atitle.encode('utf-8')    #指定方法列按照哪个字段来排序,默认不能点击,设置完后,可以点击    title.admin_order_field = 'atitle'    # 设置title显示为'当前地区名称',注意模型字段不能直接使用这个属性    # 模型字段使用verbose_name    title.short_description = '当前地区名称'    #模型类中封装方法,访问关联对象parent的成员    #返回当前地区父级地区的标题    def parent(self):        if self.aParent:            return self.aParent.atitle.encode('utf-8')        else:            return ''    # 设置parent显示为'父级地区名称',注意模型字段不能直接使用这个属性    parent.short_description = '父级地区名称'    # 显示标题内容,不再是AreaInfo object    def __str__(self):        return self.atitle.encode('utf-8')

admin管理代码

class AreaStackedInline(admin.StackedInline):    model = AreaInfo    # 控制最后显示的空白块,默认3个块,设置为2个块    extra = 2class AreaTabularInline(admin.TabularInline):    model = AreaInfo    # 控制最后显示的空白表格,默认3条,设置为2条    extra = 2#自定义模型管理类#第二种注册模型类@admin.register(AreaInfo)class AreaInfoAdmin(admin.ModelAdmin):    #每页显示10条数据    list_per_page = 10    #在底部显示控制选项    actions_on_bottom = True     #在顶部显示控制选项    actions_on_top = False      #控制列表页显示表的哪些字段    list_display = ['id', 'atitle', 'title', 'parent']     #侧边栏过滤框    list_filter = ['atitle']     #搜索框    search_fields = ['atitle']     # 以下二者只能选其一    #fields = ['aParent', 'atitle']    fieldsets = [        ('基本', {'fields':['atitle']}),        ('高级', {'fields':['aParent']})    ]    #在一对多的关系中,可以在一端的编辑页面中编辑多端的对象,嵌入多端对象的方式包括表格、块两种    #类型InlineModelAdmin:表示在模型的编辑页面嵌入关联模型的编辑    #子类TabularInline:以表格的形式嵌入    #子类StackedInline:以块的形式嵌入    # 以块的形式展示数据    #inlines = [AreaStackedInline,]    # 以表格的形式展示数据    inlines = [AreaTabularInline,]#第一种注册模型类#admin.site.register(AreaInfo, AreaInfoAdmin) 
原创粉丝点击