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:管理站点的更多相关文章

  1. Django 管理站点

    这一部分是关于 Django 的自动管理界面.这个特性是这样起作用的:它读取你模式中的元数据,然后提供给你一个强大而且可以使用的界面,网站管理者可以用它立即工作.在这里我们将讨论如何激活,使用和定制这 ...

  2. Django 1.10中文文档-第一个应用Part2-模型和管理站点

    本教程继续Part1.我们将设置数据库,创建您的第一个模型,并快速介绍Django的自动生成的管理网站. 数据库设置 现在,编辑mysite/settings.py.它是一个用模块级别变量表示Djan ...

  3. 3 第一个Django应用 第2部分(管理站点)

    Django会根据你写的模型文件完全自动地生成管理界面. 管理界面不是让访问网站的人使用的,它服务于网站管理者. 它用于网站的管理员. 3.1创建一个管理员用户 3.2进入管理站点 3.3管理站点的功 ...

  4. Django 1.10中文文档-第一个应用Part7-自定义管理站点

    开发第一个Django应用,Part7 本教程上接Part6.将继续完成这个投票应用,本节将着重讲解如果用Django自动生成后台管理网站. 自定义管理表单 通过admin.site.register ...

  5. python学习笔记--Django入门四 管理站点--二

    接上一节  python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...

  6. Django学习:创建admin后台管理站点

    Django自带一个后台管理站点,方便我们管理数据.这个界面只给管理员使用,并不对大众开放. 创建管理员用户 py manage.py createsuperuser 如下图所示: 用户名不填的话,默 ...

  7. python学习笔记--Django入门四 管理站点

    上一节  Django入门三 Django 与数据库的交互:数据建模 "管理员界面"是基础功能中的重要部分. django.contrib 包 Django自动管理工具是djang ...

  8. django管理界面使用与bootstrap模板使用

    一.bootstrap模板使用 1.去bootstrap官网找一个合适的模板,下载下来,右键另存为即可 bootstrap官网---->bootstrap中文文档3-------->起步- ...

  9. python 3+djanjo 2.0.7简单学习(三)--Django 管理页面

    django里自带了一个管理页面,也就是后台,下面来学习一下 1.创建超级管理员 python manage.py createsuperuser 键入你想要使用的用户名,然后按下回车键: Usern ...

  10. 【解决方案】Django管理页面无法显示静态文件

    [问题描述]:Django管理界面无法获取页面的css样式文件.图片等静态文件.调试模式下看到静态url显示404. [问题原因]:跟踪源码可以发现,静态文件的url是由Django自带的app(dj ...

随机推荐

  1. Nginx 状态信息功能配置

    Nginx 状态信息功能介绍 Nginx 有一个 ngx_http_stub_status_module 模块,主要功能是记录 Nginx 的基本访问状态信息,让使用者了解 Nginx 的工作状态 要 ...

  2. Java 8 – MinguoDate examples

    1. LocalDate -> MinguoDate Review a full example to convert a LocalDate to MinguoDate TestMinguoD ...

  3. --save与--save-dev的区别

    --save安装的包会在生产和开发环境中都使用: --save-dev的包只在开发环境中使用,在生产环境中就不需要这个包了,不再打包:

  4. ArcGIS Runtime SDK for iOS之符号和渲染

    符号定义了图形外观的非地理方面.它包括了图形的颜色.线宽.透明度等等.ArcGIS Runtime SDK for iOS包含了许多符号类,其中的每个类可以让你以独特的方式指定符号.每个符号的类型也是 ...

  5. 【Spring源码分析】Bean加载流程概览(转)

    转载自:https://www.cnblogs.com/xrq730/p/6285358.html 代码入口 之前写文章都会啰啰嗦嗦一大堆再开始,进入[Spring源码分析]这个板块就直接切入正题了. ...

  6. CodeCombat编程游戏

    一. 介绍 官方网站:http://cn.codecombat.com/ 项目地址:https://github.com/codecombat/codecombat CodeCombat 是一个通过玩 ...

  7. windowsclient开发--为你的client进行国际化

    之前博客讲过函数: GetUserDefaultUILanguage Returns the language identifier for the user UI language for the ...

  8. 学习MongoDB(Troubleshoot Replica Sets) 集群排除故障

    Test Connections Between all Members(集群中节点网络测试) 在进行Mongodb集群时,每个节点的网络都需要互动,假设有3个服务器节点. m1.example.ne ...

  9. java中的数据加密2 对称加密

    对称加密 也叫私钥加密.   采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密. 需要对加密和解密使用相同密钥的加密算法.由于其速度快,对 ...

  10. 8 -- 深入使用Spring -- 5... Spring 3.1 新增的缓存机制

    8.5 Spring 3.1 新增的缓存机制 Spring 3.1 新增了一种全新的缓存机制,这种缓存机制与Spring容器无缝地整合在一起,可以对容器中的任意Bean或Bean的方法增加缓存.Spr ...