admin 是Django提供的基于web的管理工具,是系统管理员用于数据的输入,删除和查询的管理工具。

超级管理员在settings中的集成:INSTALLED_APPS=['django.contrib.admin']

1.创建超级用户:python manage.py createsuperuser

 2.浏览器登录用户

3.添加自己的数据模型

from django.db import models

class Grade(models.Model):
gradeid = models.CharField(max_length=20)
g_name = models.CharField(max_length=15) def __str__(self): # 在Django管理中userModel object显示为姓名
return self.g_name class Student(models.Model):
s_name = models.CharField(max_length=20)
s_age = models.IntegerField()
s_sex = models.BooleanField(default=True) # 默认为男
s_gradeid = models.ForeignKey(Grade, on_delete=models.CASCADE)
def __str__(self):
return self.s_name

对应models.py

在admin中注册需要管理的数据库表:

from myapp.models import Student, Grade

admin.site.register([Student, Grade])   

效果:

设置界面为中文:(在settings.py中修改配置如下)

# LANGUAGE_CODE = 'en-us'
#
# TIME_ZONE = 'UTC' LANGUAGE_CODE = 'zh-hans' TIME_ZONE = 'Asia/shanghai' USE_I18N = True USE_L10N = True # USE_TZ = True
USE_TZ = False # 关闭时区

4.添加自己的管理类(在admin.py中定义类):

from django.contrib import admin

from myapp.models import Student, Grade

# 添加自己的管理类
class StudentAdmin(admin.ModelAdmin):
def sex(self): # 对性别的true/false进行处理
if self.s_sex:
return '男'
else:
return '女'
sex.short_description = '性别' # 设置显示标题
list_display = 's_name', sex # 在student页显示表,s_name/s_gradeid分别为models中的字段
search_fields = 's_name', 's_age' # 可搜索的字段名
list_filter = 's_name', 's_age' # 过滤字段
list_per_page = 2 # 分页,每页显示多少条数据
fieldsets = (
('基本信息', {'fields': ('s_name', 's_age')}), # fields :显示的字段
('可选信息', {'fields': ('s_gradeid', 's_sex')}) # exclude:不显示的字段
) admin.site.register(Student, StudentAdmin) # 注册

效果1:student的显示

效果2:显示方式

 5.admin中的级联

from django.contrib import admin

from myapp.models import Student, Grade

class StudentInfo(admin.TabularInline):
extra = 3 # 创建的基础条数
model = Student # 连接的表 class GradeAdmin(admin.ModelAdmin):
inlines = [StudentInfo] admin.site.register(Grade, GradeAdmin)

效果:

6.修改Django管理的HTML页面

python_django_admin的更多相关文章

  1. 用node-webkit(NW.js)创建桌面程序

    以往写windows桌面程序需要用MFC.C#之类的技术,那么如果你只会web开发技术呢?或者说你有一个网站,但是你想把你的网站打包成一个桌面应用程序,该如何做呢? 答案就是用node-webkit这 ...

  2. 使用node-webkit包装浏览器

    node-webkit简称nwjs:开源地址 https://github.com/nwjs/nw.js 参考博客 https://www.cnblogs.com/soaringEveryday/p/ ...

随机推荐

  1. shell unique

    由于uniq命令只能对相邻行进行去重复操作,所以在进行去重前,先要对文本行进行排序,使重复行集中到一起 1.文本行去重 (1)排序由于uniq命令只能对相邻行进行去重复操作,所以在进行去重前,先要对文 ...

  2. RabbitMQ学习第三记:发布/订阅模式(Publish/Subscribe)

    工作队列模式是直接在生产者与消费者里声明好一个队列,这种情况下消息只会对应同类型的消费者. 举个用户注册的列子:用户在注册完后一般都会发送消息通知用户注册成功(失败).如果在一个系统中,用户注册信息有 ...

  3. 力扣—Reorder List(重排链表)python实现

    题目描述: 中文: 给定一个单链表 L:L0→L1→…→Ln-1→Ln ,将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→… 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点 ...

  4. 力扣—one plus(加一) python实现

    题目描述: 中文: 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字. 你可以假设除了整数 0 之外,这个整数不会以零开头 ...

  5. (PASS)JAVA数组去重 三种方法 (不用集合)

    第一种方法(只学到数组的看): 定义一个新的数组长度和旧数组的长度一样,存储除去重复数据的旧数组的数据和0, package demo01; import java.sql.Array; import ...

  6. Java集合类里面最基本的接口

    Collection:代表一组对象,每一个对象都是它的子元素. Set:不包含重复元素的Collection. List:有顺序的Collection,并且可以包含重复元素. Map:可以把键(key ...

  7. css3-手把手 transform 小时钟

    学习css3ing,正在学习transfomr,突发奇想用此做个小时钟,开始吧: 准备前期工作,把时钟的表盘,时分秒针,实时时间标签 的大概样子做好,效果如图: html代码如下: <div c ...

  8. Druid动态数据源配置

    上文已经讲了单个数据源的Druid的配置(http://www.cnblogs.com/nbfujx/p/7686634.html) Druid动态数据源配置 主要是继承AbstractRouting ...

  9. 四轴电池ADC监控学习

    一.硬件原理 电池供电通过两个分压电阻接地,STM32则在两电阻中间通过ADC检测电池电压.(引脚BAT_DET) 二.ADC通道初始化 //初始化电池检测ADC //开启ADC1的通道8 //Bat ...

  10. 2019 牛客暑期多校 B generator 1 (矩阵快速幂+倍增)

    题目:https://ac.nowcoder.com/acm/contest/885/B 题意:给你x0,x1,让你求出xn,递推式时xn=a*xn-1+b*xn-2 思路:这个n特别大,我自己没有摸 ...