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. setserial - 取得/设置 Linux 串行口的信息

    总览 setserial [ -abqvVWZ] 设备 [ 命令参数一 [ 设备变元参数 ] ] ... setserial -g [-abGv ] 设备一 ... 描述 setserial 是一个用 ...

  2. go语言从例子开始之Example22.协程之通道

    通道 是连接多个 Go 协程的管道.你可以从一个 Go 协程将值发送到通道,然后在别的 Go 协程中接收. Example: package main import "fmt" f ...

  3. Codeforces 1203F (贪心, DP)

    题意:有n个任务,你的初始rating是m, 这n个任务有两个指标:完成这项任务所需的最低rating(a[i]),以及完成这项任务后rating的变化(可能为负)(b[i]).rating不能为负. ...

  4. day01 html介绍 文档声明头 head标签 body标签

    day01 html   初识html <!--文档的声明--> <!doctype html>   <html lang="en">    # ...

  5. python 读取文件时,精确的保留数据

    import numpy as npimport pandas as pd point = pd.read_csv('waypoint21.csv') with pd.option_context(' ...

  6. 【串线篇】浅谈BeanFactory

    BeanFactory&ApplicationContext BeanFactory: bean工厂接口,负责创建bean实例, 容器里保存的所有单例bean其实是一个map<key-- ...

  7. nmap使用笔记

    扫描全端口判断服务 nmap ip -T4 -Pn -sV -p 1-65535 扫描端口并且标记可以爆破的服务 nmap ip --script=ftp-brute,imap-brute,smtp- ...

  8. [BOOKS]BIG DATA and DATA ANALYTICS: The Beginner's Guide to Understanding the Analytical World

  9. springDataRedis 依赖

    <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit ...

  10. Python--同步锁(互斥锁)、死锁(状态)、递归锁、信号量、Event对象

    同步锁/互斥锁 (Lock) import time import threading def sub(): global num #在每个线程中都获取这个全局变量 #num-=1 temp=num ...