Django学习笔记(3)--admin管理站点配置

本文介绍了如何在Django中配置admin管理站点,包括创建管理员账号、管理界面的使用,以及如何关联对象实现一对多关系。此外,还展示了如何通过自定义admin.py来定制管理页面和使用装饰器进行页面注册。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

admin站点管理

创建管理员账号:

python manage.py createsuperuser

代码片段

settings.py

INSTALLED_APPS = [
    'django.contrib.admin',	#默认存在,若没有需添加
    ........
 ]
 ..........
 ...........
LANGUAGE_CODE = 'zh-Hans'   #更改语言

TIME_ZONE = 'Asia/Shanghai' #更改时区

admin.py

from .models import Question,Choice,Grades,Students

# Register your models here.

#自定义管理类
class QuestionAdmin(admin.ModelAdmin):
    #admin管理页面列表页属性
    list_display = ['question_text','pub_date']  #显示字段
    list_filter = ['question_text']              #过滤字段
    search_fields = ['question_text']            #搜索字段
    list_per_page = 2   #分页

    #添加、修改页属性。
    #!!!注意:fields和fieldsets不能同时使用
    #fields = ['pub_date','question_text']       #改变属性先后顺序
    fieldsets = [                                #给属性分组
        ("base",{'fields':['question_text']}),
        ("date",{'fields':['pub_date']})
    ]
    
#注册对应的model    
admin.site.register(Question,QuestionAdmin)

管理界面

在管理界面添加或修改的数据会直接在数据库中体现

关联对象

  • 在一个对象中插入多个对象(一对多)

    代码示例
    在admin.py中添加如下代码

    class StudentsInfo(admin.TabularInline):#StackedInline竖向展示  TabularInline横向展示
        model = Students    #models中对应的类
        extra = 2   #一个年级一次增加或修改2个学生
    
    class GradesAdmin(admin.ModelAdmin):
        inlines = [StudentsInfo]
        .....
        .....
        ]
    
  • 效果展示
    一对多修改显示
    admin自定义管理页面
    admin.py

    class StudentsAdmin(admin.ModelAdmin):
        #定义一个函数gender,改变boolean值的显示方式
        def gender(self):		
            if self.sgender:
                return "男"
            else:
                return "女"
    
        def grade(self):
            return self.grades
        def name(self):
            return self.sname
        def age(self):
            return self.sage
        def contend(self):
            return self.scontend
            
        #定义一个函数delete,改变boolean值的显示方式
        def delete(self):
            if self.isDelete:
                return "是"
            else:
                return "否"
        
        #设置页面列的名称
        grade.short_description = "班级"
        name.short_description = "姓名"
        age.short_description = "年龄"
        gender.short_description = "性别"
        contend.short_description = "简介"
        delete.short_description = "是否删除"
     
        list_display = [grade,name,age,gender,contend,delete] #写入定义的函数
        .......
    
    	#执行动作位置显示
        actions_on_top = False
        actions_on_bottom = True
    

页面展示
页面列名称显示
执行动作位置显示
使用装饰器注册页面
admin.py

#删除原有的注册器,添加新的装饰器装饰对应类
@admin.register(Students)
class StudentsAdmin(admin.ModelAdmin):
	......
	......
# admin.site.register(Students,StudentsAdmin)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值