admin站点管理
创建管理员账号:
python manage.py createsuperuser
代码片段
INSTALLED_APPS = [
'django.contrib.admin', #默认存在,若没有需添加
........
]
..........
...........
LANGUAGE_CODE = 'zh-Hans' #更改语言
TIME_ZONE = 'Asia/Shanghai' #更改时区
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.pyclass 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)