Django后台管理

基本配置

默认登录地址:http://127.0.0.1:8000/admin

创建后台管理员:

  python3  ./manage.py  createsuperuser    # 回车后输入以下内容

  Username:输入用户名

  Email Address:电子邮箱

  Password:密码
  Password(again):重复密码

基本管理

1、在应用中的admin.py中注册要管理的实体类(models.py中的类)

from django.contrib import admin
from .models import *# 注册CartInfo和Order两个实体类
admin.site.register(CartInfo)
admin.site.register(Order)

2、修改models.py,来改变后台内容的显示

  1). models.py中为各个类(实体类)追加一个方法。

def __str__(self):return self.属性名

  2). 通过Models类的内部类Meta定义每个类的展现形式

class Author(models.Model):... ...# 定义对象在后台的展现形式def __str__(self):return self.names# 声明内部类,定义当前类在管理页面中的展现形式class Meta:# 1.修改当前表名为author(需要同步到数据库)db_table = 'author'# 下面两个只与后台有关系# 2.修改实体类在后台管理页中的名称(单数)verbose_name = '作者'# 3.修改实体类在后台管理页中的名称(复数)verbose_name_plural = verbose_name# 4.先按照年龄降序排序,再按照ID升序排序ordering = ['-age', 'id']

高级管理

1、在admin.py中创建高级管理类并注册

# 定义Author高级管理类
# 类名:实体类名+Admin,必须继承admin.ModelAdmin
class AuthorAdmin(admin.ModelAdmin):pass# 注册高级管理类
admin.site.register(Author, AuthorAdmin)

2、定制高级管理信息

# 定义Author高级管理类
class AuthorAdmin(admin.ModelAdmin):#  list_display:指定在列表页中能够显示的字段#  取值:由属性名称组成的元组或列表list_display = ['names', 'age', 'email']#  list_display_links:定义列表页中能链接到详情页的字段#  取值:由属性名称组成的元组或列表(必须存在与list_display中)list_display_links = ['names', 'email']# list_editable:指定在列表页中允许被编辑的字段# 取值:由属性名称组成的元组或列表# 不能出现在list_display_links, 但是必须在list_display中list_editable = ['age']# search_fields:添加允许被搜索的字段# 取值:由属性名称组成的元组或列表search_fields = ['names', 'email']# list_filter:在列表的右侧增加过滤器,实现快速筛选list_filter = ['names', 'email']# fields:指定详情页显示的字段以及排列的顺序# 取值:由属性名称组成的元组或列表fields = ['email', 'names', 'age', 'isActive']# date_hierarchy:在列表页的顶端增加一个时间选择器# 取值必须是DateField或DateTimeField的值date_hierarchy = 'publicate'# fieldsets:在详情页中,对字段进行分组显示(不能同时与fields存在)fieldsets = [# 分组1
        ('基本信息', {'fields': ('names', 'email')}),# 分组2
        ('可选信息', {'fields': ('age', 'isActive'),'classes': ('collapse',),})]

关系映射

一对一映射

  一对一表示,A表中的一条记录只能与B表中的一条记录相关联。

  数据库中实现方式:

    A表:设置主键  

    B表:增加一列(字段),并引用自A表的主键,并且得增加唯一约束

  1、在Django中的实现方式:

    在要相关联的两个实体类中的任意一个中增加:

    属性(字段)名 =  models.OneToOneField(要关联的实体类名)

  2、关联查询

# 在Wife类中新增一个字段一对一关联Author类
class Wife(models.Model):... author=models.OneToOneField(Author)

# 正向查询:通过wife 找 author
# 1.获取 id 为1 的 Wife的信息
wife = Wife.objects.get(id=1)
# 2.通过 Wife 的关联属性 author 来找Author
author = wife.author# 反向查询:通过author 找 wife
# 1.获取 id 为14 的 Author的信息
author = Author.objects.get(id=14)
# 2.通过 author 的关联属性 wife 来找wife# wife是Django通过OneToOneField在Author(被关联表)中默认增加的一个隐式属性
wife = author.wife

一对多映射

  一对多表示,A表中的一条记录能与B表中的多条记录相关联。反之,B表中的一条记录只能与B表中的一条记录相关联。

  数据库中实现方式:

    通过外键来实现一对多,在‘多’表中增加外键对‘一’表的主键进行引用

  1、在Django中的实现:

    在“多”的实体类中增加:

    属性(字段)名 = models.ForeignKey("一"的实体类名)

  2、关联查询

# Book(多) 和 Publisher(一)
class Book(models.Model):... ...publisher=models.ForeignKey(Publisher)

# 正向查询 - 通过Book查询Publisher
# 查询id为1的书籍的信息
book = Book.objects.get(id=1)
# 查询关联的publisher
publisher = book.publisher# 反向查询 - 通过Publisher查询Book
# Django会在 “一” 的实体中增加关联对象_set 属性,用于查询“多”的数据
# 结合 Publisher 和 Book 之间关系 :在 Publisher 中 增加了一个 book_set 属性
publisher=Publisher.objects.get(id=1)
books = publisher.book_set.all()

多对多关联

  多对多表示,A表中的一条记录能与B表中的多条记录相关联。反之,B表中的一条记录同样能与B表中的多条记录相关联。

  在数据库中的实现方式:

    必选创建第三张表,关联两张多对多的数据表

  1、在Django中实现方式:

    在任意一个要实现多对多关联的实体类中增加:

    属性(字段)名 = models.ManyToManyField(关联的实体类名)

  2、关联查询

# 实体类Author 与 Book多对多关联
class Author(models.Model):... ...book = models.ManyToManyField(Book)

# 正向查询-通过Author查询所有的Book
author = Author.objects.get(id=1)
# 通过 关联属性.all() 查询所有对应数据
books = author.book.all()# 反向查询-通过Book查询所有的Author
# Django中 会在Book(被关联) 实体中增加一个隐式属性author_set
book = Book.objects.get(id=1)
authors = book.author_set.all()

对于关联映射的总结:

  三种关联关系的查询中,都存在正向和反向两种查询方式

  正向查询都是直接用增加的关联属性进行查询就可以

  反向查询在Django中都会增加一个隐式属性,分别是:

    一对一:关联的实体类名(小写)

    一对多:在“一”的实体增加关联属性“_set”属性,用于查询"多"的数据

    多对多:与一对多类似。

未完待续......

转载于:https://www.cnblogs.com/hxgoto/p/9364879.html

python+Django框架运用(四)相关推荐

  1. Python Django框架入门第一课

    Python Django框架入门 1.Django简介 Django使用python开发的一个免费的Web框架,几乎囊括了Web应用的方方面面,用于快速搭建高性能.优雅的网站. 2.配Django运 ...

  2. 基于Python Django框架后端的微信小程序开发

    刚做完一个股票信息服务类的微信小程序(小程序名字"博股论基",大家有兴趣可以搜一下),也有一些心得,在这里记录一下开发过程,算是个开发笔记,同时也希望能给需要的同学一些帮助. -- ...

  3. python网站设计理念_简单介绍下python Django框架的历史,设计理念及优势_Django讲解2...

    简单介绍下python Django框架的历史,设计理念及优势 Django是一个高层次的 Python Web 框架,它是一个鼓励快速开发和干净,实用的框架设计.Django可以更容易地快速构建更好 ...

  4. liunx+python+django框架实现图片生成二维码

    点击箭头处"蓝色字",免费领测试技术及面试资料! 余生皆欢喜 liunx+python+django框架实现二维码生成器 首先我简单的介绍下django:django官网解释就是如 ...

  5. 利用 Python django 框架 输入汉字,数字,字符,等。。转成二维码!

    利用 Python django 框架 输入汉字,数字,字符,等..转成二维码! 模块必备:Python环境 + pillow  + qrcode 模块 核心代码import qrcodeqr = q ...

  6. Python+Django框架Web应用开发-欧阳桫-专题视频课程

    Python+Django框架Web应用开发-237人已学习 课程介绍         系统介绍使用Django框架开发Web应用程序,当然,依然水煮风格 课程收益     掌握Django框架的使用 ...

  7. [Python] Django框架入门

    说明:Django框架入门 当前项目环境:python3.5.django-1.11 项目名:test1 应用名:booktest 命令可简写为:python manager.py xxx => ...

  8. python django框架如何导出_python框架django的数据库的正向生成和反向生成

    正向生成,指的是先创建model.py文件,然后通过django内置的编译器,在数据库如mysql中创建出符合model.py的表. 反向生成,指的是先在数据库中create table,然后通过dj ...

  9. python django框架分析_Django框架模型简单介绍与使用分析

    本文实例讲述了Django框架模型简单介绍与使用.分享给大家供大家参考,具体如下: ORM介绍 ORM Object relational mapping 对象关系映射 把面向对象中的类和数据库表一一 ...

  10. Python——Django框架——Model数据库模型

    一.设置 1.Django的setting中配置数据库(MySQL配置) DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql',' ...

最新文章

  1. ie浏览器修复_Win8系统电脑无法打开运行IE浏览器的解决方法
  2. 2021年CISCN初赛re
  3. dva处理_umi项目中dvaeffects异常统一处理
  4. 27.4. /etc/bandwidthd.conf
  5. 冒泡排序(Java版)
  6. 计算平面坐标某点(x,y)与原点(0,0)的角度
  7. android okgo参数,Android OkGo基本操作
  8. reveal end of document
  9. CVPR 2020 Workshop on Continual learning in Computer Vision 征稿
  10. 个人成长过程中最重要的技能是什么?
  11. 周志华机器学习西瓜书速记第二章绪论模型评估与选择(二)
  12. Arcgis自带世界矢量图
  13. 小楼一夜听春雨···
  14. C语言程序设计实验报告——实验七
  15. java中私有变量和方法_Java 私有变量和私有方法
  16. 微信群控系统源码的实现原理,核心源码实现,核心框架。
  17. 数据库(Mysql)学习
  18. Lora Ra-01模块初步调试问题记录
  19. python虚拟跑步机
  20. 《2040大预言:高科技引擎与社会新秩序》——2.4 在芯片上建造大金字塔

热门文章

  1. 纯二代测序从头组装基因组
  2. Java面试题:SSH和SSM原理对比总结以及牵扯到的面试问题
  3. 打卡训练绘制四叶风轮
  4. 计算机数控系统的数控程序输入方式,计算机数控系统
  5. 渗透测试工具Burpsuite
  6. USB2.0、USB3.0和typec引脚定义
  7. 分布式云边协同智能推理方法
  8. 目标检测评价指标 AP、mAP
  9. pocket英语语法崔荣容笔记
  10. 毒瘤题No.004-byFHS