Django:管理站点
1、自定义管理页面

自定义管理界面需要创建一个类,继承admin.ModelAdmin
booktest/admin.py
class BookInfoAdmin(admin.ModelAdmin): # Register your models here.
# 参数1 注册的类 为哪个类注册后台管理页面
# 参数2 管理页面的显示的方式
admin.site.register(BookInfo, BookInfoAdmin)
admin.site.register(HeroInfo)
list_display:指示BookInfo的管理页面会显示id、btitle、bpub_date三个字段:

# list_display:显示的字段
class BookInfoAdmin(admin.ModelAdmin):
# 显示的字段
list_display = ['id', 'btitle', 'bpub_date']
list_filter:让被过滤字段显示在右侧

class BookInfoAdmin(admin.ModelAdmin):
# 显示的字段
list_display = ['id', 'btitle', 'bpub_date']
list_filter = ['btitle']
search_fileds:搜索字段,搜索框会出现在上侧

class BookInfoAdmin(admin.ModelAdmin):
# 显示的字段
list_display = ['id', 'btitle', 'bpub_date']
list_filter = ['btitle']
search_fields = ['btitle']
list_per_page:分页。分页框会出现在下侧

class BookInfoAdmin(admin.ModelAdmin):
# 显示的字段
list_display = ['id', 'btitle', 'bpub_date']
list_filter = ['btitle']
search_fields = ['btitle']
list_per_page = 3
2、添加页面
fields:属性的先后顺序;点击“增加Book Info”按钮页面,在添加页面会有fields所指示的先后顺序

fields = ['bpub_date', 'btitle']
fieldsets:属性分组;点击“增加Book Info”按钮页面,在添加页面会有fieldssets中所指示的分组

fieldsets = [
("basic",{'fields':['btitle']}),
("more",{'fields':['bpub_date']})
]
注意:fields和fieldsets两者只能写一个
3、关联对象
考虑到BookInfo跟HeroInfo是一对多的关系。希望在增加BookInfo记录的同时,一起增加几个HeroInfo的记录。
此时,需要在注册的时候使用另外的属性来添加这个关系
定义一个类,继承admin.StackedInline或admin.TabularInline。表示内部增加其他记录
booktest/admin.py
class HeroInfoInline(admin.StackedInline):
model = HeroInfo # 对应哪个模型
extra = 3 # 一次增加多少条记录 class BookInfoAdmin(admin.ModelAdmin):
# 显示的字段
list_display = ['id', 'btitle', 'bpub_date']
list_filter = ['btitle']
search_fields = ['btitle']
list_per_page = 3
#fields = ['bpub_date', 'btitle']
fieldsets = [
("basic",{'fields':['btitle']}),
("more",{'fields':['bpub_date']})
]
inlines = [HeroInfoInline]
现在在增加一本书的时候,同时会增加几个人物


4、显示布尔值
给HeroInfo加上类似的功能

class HeroInfoAdmin(admin.ModelAdmin):
# 显示的字段
list_display = ['id', 'hname', 'hgender', 'hcontent'] admin.site.register(BookInfo, BookInfoAdmin)
admin.site.register(HeroInfo, HeroInfoAdmin)
注意这里的性别hgender是用绿色的勾和红色的杠表示男和女。不太直观。可以考虑修改:

booktest/models.py
class HeroInfo(models.Model):
# 设置字段
hname = models.CharField(max_length = 10)
hgender = models.BooleanField()
hcontent = models.CharField(max_length = 1000)
hbook = models.ForeignKey(BookInfo, on_delete = models.CASCADE)
def __str__(self):
return self.hname def gender(self):
if self.hgender:
return '男'
else:
return '女'
gender.short_description = '性别'
booktest/admin.py
class HeroInfoAdmin(admin.ModelAdmin):
# 显示的字段
list_display = ['id', 'hname', 'gender', 'hcontent']
Django:管理站点的更多相关文章
- Django 管理站点
这一部分是关于 Django 的自动管理界面.这个特性是这样起作用的:它读取你模式中的元数据,然后提供给你一个强大而且可以使用的界面,网站管理者可以用它立即工作.在这里我们将讨论如何激活,使用和定制这 ...
- Django 1.10中文文档-第一个应用Part2-模型和管理站点
本教程继续Part1.我们将设置数据库,创建您的第一个模型,并快速介绍Django的自动生成的管理网站. 数据库设置 现在,编辑mysite/settings.py.它是一个用模块级别变量表示Djan ...
- 3 第一个Django应用 第2部分(管理站点)
Django会根据你写的模型文件完全自动地生成管理界面. 管理界面不是让访问网站的人使用的,它服务于网站管理者. 它用于网站的管理员. 3.1创建一个管理员用户 3.2进入管理站点 3.3管理站点的功 ...
- Django 1.10中文文档-第一个应用Part7-自定义管理站点
开发第一个Django应用,Part7 本教程上接Part6.将继续完成这个投票应用,本节将着重讲解如果用Django自动生成后台管理网站. 自定义管理表单 通过admin.site.register ...
- python学习笔记--Django入门四 管理站点--二
接上一节 python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...
- Django学习:创建admin后台管理站点
Django自带一个后台管理站点,方便我们管理数据.这个界面只给管理员使用,并不对大众开放. 创建管理员用户 py manage.py createsuperuser 如下图所示: 用户名不填的话,默 ...
- python学习笔记--Django入门四 管理站点
上一节 Django入门三 Django 与数据库的交互:数据建模 "管理员界面"是基础功能中的重要部分. django.contrib 包 Django自动管理工具是djang ...
- django管理界面使用与bootstrap模板使用
一.bootstrap模板使用 1.去bootstrap官网找一个合适的模板,下载下来,右键另存为即可 bootstrap官网---->bootstrap中文文档3-------->起步- ...
- python 3+djanjo 2.0.7简单学习(三)--Django 管理页面
django里自带了一个管理页面,也就是后台,下面来学习一下 1.创建超级管理员 python manage.py createsuperuser 键入你想要使用的用户名,然后按下回车键: Usern ...
- 【解决方案】Django管理页面无法显示静态文件
[问题描述]:Django管理界面无法获取页面的css样式文件.图片等静态文件.调试模式下看到静态url显示404. [问题原因]:跟踪源码可以发现,静态文件的url是由Django自带的app(dj ...
随机推荐
- JAVA 线程池架构浅析
经历了Java内存模型.JUC基础之AQS.CAS.Lock.并发工具类.并发容器.阻塞队列.atomic类后,我们开始JUC的最后一部分:线程池.在这个部分你将了解到下面几个部分: 线程池的基础架构 ...
- 《深入应用C++11:代码优化与工程级应用》勘误表
<深入应用C++11:代码优化与工程级应用>勘误表,会不断更新,欢迎读者留言或发邮件(cpp11book@163.com)给我提出宝贵意见. 1.第7.3节目录final和override ...
- 【iCore4 双核心板_ARM】例程十四:FATFS实验——文件操作
实验现象: 核心代码: int main(void) { int i,j; FIL file; FATFS fatfs; static FRESULT res; unsigned ]; unsigne ...
- Vue.js常用指令:v-model
一.v-model指令 v-model 用来获取表单元素的值.对应input输入框获取的是输入的值,单选按钮.复选框.下拉框获取的是选择的状态. 代码示例如下: <!DOCTYPE html&g ...
- Vue:Vue2.0搭建脚手架
随着Vue.js越来越火爆,更多的项目都用到Vue进行开发,在实际的开发项目中如何搭建脚手架呢?今天就来跟大家分享一下如何使用vue-cli搭建脚手架. 一.安装node.js 1.进入官网https ...
- Unity场景渲染相关实现的猜想
如下,很简单的一个场景,一个Panel,二个Cube,一个camera,一个方向光,其中为了避免灯光阴影的影响,关掉阴影,而Panel和二个Cube都是默认的材质,没做修改,我原猜,这三个模型应该都动 ...
- C# 反射总结 获取 命名空间 类名 方法名
一.获取 命名空间 类名 方法名 using System; using System.Collections.Generic; using System.Linq; using System.Tex ...
- laravel中artisan的用法
如:
- Git 解决本地远端版本冲突
简单粗暴.... git push -u origin master -f
- [Laravel] 01 - Love beautiful code? We do too.
前言 一.良心资料 英文 Laravel 框架:https://laravel.com/ 教程:https://laracasts.com/series/ laravel-from-scratch-2 ...