首页 > 其他分享 >ORM对数据的增删改查,动静态网页,Django创建表关系,Django框架的请求生命周期流程图

ORM对数据的增删改查,动静态网页,Django创建表关系,Django框架的请求生命周期流程图

时间:2023-07-28 15:00:21浏览次数:34  
标签:models max 改查 外键 Django ORM 64 创建 id

通过结合前端页面实现ORM对数据的增删改查

# 我让你写一个页面,就是把数据库中的数据以表格的形式展示出来,然后在每一行的后面加两个按钮,分别是修改、删除的按钮

# 表格的展示页面

'''思考修改功能的逻辑:'''
1、 确定修改哪条记录,怎么确定?  通过主键id确定唯一一条记录
2、点击修改的按钮,应该跳转到一个修改的页面
3、应该通过id查询到原来的数据,并且把这个记录的数据展示到修改的页面
4、开始修改,提交到后端的修改数据的方法中

'''删除功能的逻辑:'''
1、确定删除哪条记录,怎么确定?  通过主键id确定唯一一条记录
2、点击删除的按钮,请求到后端的删除地址
3、后端拿到id直接做删除操作、跳转到列表页面

动静态网页

静态网页
	# 在页面上写死的数据,一直不会改变的都是静态网页

动态网页
	# 动态网页是从后端获取到的数据在页面展示
    # 数据是从数据库中查询出来的也是动态网页

Django创建表关系

"""
一对一
一对多
多对多
"""

我们以图书表、出版社表、作者表、作者详情表为例创建

# 判断表关系:换位思考法
分析表关系:
	图书表和出版社表是一对多的关系    >>> 外键如何创建:外键字段建在多的一方
    图书表和作者表是多对多的关系      >>>  外键如何创建:外键字段建在第三张表中
    """
    	创建多对多的方式有3种方式,先将一种
    	
    """
    作者表和作者详情是一对一的关系	   >>>  外键如何创建:外键字段建在查询频率较高的一方
    
# 创建表关系字段先创建表的基础字段,先创建没有的外键的,最后在写外键字段

class Book(models.Model):
    title = models.CharField(max_length=64)
    """
    max_digits=None,        总共多少位
    decimal_places=None     小数占几位
    """
    # price decimal(8,2)
    price = models.DecimalField(max_digits=8, decimal_places=2)
    # publish_id = models.ForeignKey(to='Publish', to_field='id') # 创建外键的
    """如果你的字段是主键字段,那么,你就不用在字段的后面拼接_id了,它会自定的拼接_id"""
    publish = models.ForeignKey(to='Publish')  # 创建外键的 默认就是跟表的主键字段建立关系
    """
        authors:它是一个虚拟字段,意思是,在book表中不会实际创建出来这个字段,它能够创建出来第三张表(自动)
    """
    authors = models.ManyToManyField(to='Author', )


class Publish(models.Model):
    title = models.CharField(max_length=64)
    addr = models.CharField(max_length=64)


class Author(models.Model):
    name = models.CharField(max_length=64)
    author_detail = models.OneToOneField(to='AuthorDetail')
    
    
# django1版本
on_delete
当删除关联表中的数据时,当前表与其关联的行的行为。

models.CASCADE
删除关联数据,与之关联也删除

models.DO_NOTHING
删除关联数据,引发错误IntegrityError

models.PROTECT
删除关联数据,引发错误ProtectedError

models.SET_NULL
删除关联数据,与之关联的值设置为null(前提FK字段需要设置为可空)

models.SET_DEFAULT
删除关联数据,与之关联的值设置为默认值(前提FK字段需要设置默认值)

models.SET
删除关联数据,
a. 与之关联的值设置为指定值,设置:models.SET(值)
b. 与之关联的值设置为可执行对象的返回值,设置:models.SET(可执行对象)

# django2

class Book(models.Model):
    title = models.CharField(max_length=64)
    """
    max_digits=None,        总共多少位
    decimal_places=None     小数占几位
    """
    # price decimal(8,2)
    price = models.DecimalField(max_digits=8, decimal_places=2)
    # publish_id = models.ForeignKey(to='Publish', to_field='id') # 创建外键的
    """如果你的字段是主键字段,那么,你就不用在字段的后面拼接_id了,它会自定的拼接_id"""
    publish = models.ForeignKey(to='Publish', on_delete=models.CASCADE)  # 创建外键的 默认就是跟表的主键字段建立关系
    """
        authors:它是一个虚拟字段,意思是,在book表中不会实际创建出来这个字段,它能够创建出来第三张表(自动)
    """
    authors = models.ManyToManyField(to='Author', )


class Publish(models.Model):
    title = models.CharField(max_length=64)
    addr = models.CharField(max_length=64)


class Author(models.Model):
    name = models.CharField(max_length=64)
    author_detail = models.OneToOneField(to='AuthorDetail',on_delete=models.CASCADE)


class AuthorDetail(models.Model):
    phone = models.CharField(max_length=64)
    qq = models.CharField(max_length=64)

Django框架的请求生命周期流程图

# 其实就是帮我我们梳理django框架的执行流程,他能够更好的帮助我们后面的复习

标签:models,max,改查,外键,Django,ORM,64,创建,id
From: https://www.cnblogs.com/huangchunfang/p/17587619.html

相关文章

  • Transformer模型
    Transformer模型Transformer模型及其实现历史:谷歌团队在2017年提出的经典NLP模型(目前很火的bert模型就是基于此模型)。特点:Transformer模型使用了Self-Attention机制,不采用RNN的顺序结构,使得模型可以并行化训练,而且能够拥有全局信息所有的大语言模型都是基于transformer......
  • c# WinForm 引用 Chrome 模拟操作
    Nuget CefSharp.WinForms publicForm1(){InitializeComponent();chromiumWebBrowser1.LoadingStateChanged+=ChromiumWebBrowser1_LoadingStateChanged;}privatevoidbutton1_Click(objectsender,EventArgs......
  • dephi RTI (Runtime Type Information)获取运行时的控件信息
    varEdit:TComponent;beginEdit:=FindComponent("Edit1");IfEditisTEditthenTEdit(Edit).Text:='你好Delphi7';end;  RTTI(RunTimeTypeInformation):运行时类型信息,就是在程序运行后也能得到类型(譬如TButton类)的信息. 这在早期主要用于IDE......
  • 超越 Mybatis-Plus?超强 ORM 框架横空出世!
    点击“终码一生”,关注,置顶公众号每日技术干货,第一时间送达!1、MyBatis-Flex是什么MyBatis-Flex是一个优雅的MyBatis增强框架,它非常轻量、同时拥有极高的性能与灵活性。我们可以轻松的使用Mybaits-Flex链接任何数据库,其内置的QueryWrapper^亮点帮助我们极大的减少了SQL编写......
  • WinForm RichTextBox 加载大量文本卡死和UTF-8乱码问题
    在RichTextBox控件的使用中我们会遇到加载TXT文件的问题,通常我们会有两种处理方式。一、加载TXT字符串,设置到RichTextBox//打开并且读取文件数据FileStreamfs=newFileStream(txtPath,FileMode.Open,FileAccess.Read);StreamReadersr=newStreamReader(fs,Encoding.U......
  • Django
    目录Web应用http协议web框架借助于wsgiref模块动静态网页python中的三大主流web框架Django框架下载安装基本命令django三板斧配置文件的介绍静态文件的配置form表单request对象的方法链接数据库(MySQL)pycharm链接数据库(MySQL)Django链接数据库(MySQL)Django的ORM操作orm针对字段......
  • 速通 Django
    0x01入门(1)简介官方网站链接Django是一个开放源代码的Web应用框架,由Python写成Django采用MTV的框架模式,即模型M,视图V和模版T(2)安装a.创建虚拟环境安装virtualenv:pipinstallvirtualenvvirtualenvwrapper-win查看虚拟环境:workon创建新的虚拟环境env:mkvirtu......
  • Django2配置文件、pycharm连接数据库、Django链接mysql、orm
    配置文件介绍(setting.py)注册应用的INSTALLED_APPS中间件MIDDLEWARE根路由文件名ROOT_URLCONFDjango连接数据库的DATABASES语言和时间LANGUAGE_CODE='zh-hans'TIME_ZONE='Asia/Shanghai'静态文件的配置以登录功能表单(form)的属性action参......
  • Python基础day54 Django2
    配置文件的介绍#注册应用的INSTALLED_APPS=['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.......
  • CF623E Transforming Sequence
    难点在于卡__int128(?)。首先\(N>K\)显然无解,只需考虑\(N\leK\)的情况。然而这并没有什么用。把\(b\)看作集合,显然\(b_i\subsetb_{i+1}\)。所以令\(f_{n,i}\)为考虑到\(b_n\)且\(|b_n|=i\)的方案数,集合元素无序,即选择\(\{A,B,C\}\)或者\(\{A,B,D\}\in\{A,B,C,D......