教程源码: z991/django_turital

我个人认为web开发中,最重要的是数据库的设计,就是models的模型设计,web开发说白了就是对数据库的增删改查,今天先看下数据库的增加,修改,和删除吧,我们操作数据库可以使用原生sql语句,但是如果sql的操作语句不复杂,不太考虑性能的话,可以使用django的ORM语句,django的ORM是通过一些封装,根据ORM的语法可以对数据库增删改查,用一同一个ORM语句可以支持对mysql,sqlite,PostgreSQL,Oracle等数据库增删改操作,兼容性很强。

我现在的model模型是有两个表,一个学生表,一个班级表,代码如下:

from django.db import models
from datetime import datetimeclass Student(models.Model): # 一定要继承# CharField为字符串类型,必须有max_length设置最大长度,verbose_name在django后台显示该英文字段的中文意思name = models.CharField(max_length=30, verbose_name="学生姓名")# IntegerField整型age = models.IntegerField(default=16, verbose_name="学生年龄")# DecimalField浮点型,max_digits=5表示整数部分和小数位数之和不大于5,decimal_places表示小数的最大位数,# null=True表示字段可以为空,blank=True表示在admin后台中该数据栏可以为空score = models.DecimalField(verbose_name='成绩', max_digits=5, decimal_places=2, null=True, blank=True)## EmailField该字段必须符合邮箱格式email = models.EmailField(verbose_name='邮箱', null=True, blank=True)# TextField 字段位文本类型,长度没有限制introduce = models.TextField(verbose_name="学生自我介绍")# DateTimeField为日期类型,auto_now_add=True该条数据创建的时间,数据更新时,时间数值不变# auto_now=True该条数据创建的时间,数据更新时,时间数值也会改变created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")updated_at = models.DateTimeField(auto_now=True, verbose_name="更新时间")# ForeignKey一对多外键,比如一个班级有多个学生,就属于一对多,外键要放到"多"的那张表,# related_name是对外键取别名,常用在django的orm反向查询中cls = models.ForeignKey('Class', related_name="stu_cls", null=True)# 下面是django后台字段显示控制class Meta:verbose_name_plural = verbose_name = "学生表"def __str__(self):return self.nameclass Class(models.Model): # 班级表name = models.CharField(verbose_name='班级名称',max_length=10)created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")updated_at = models.DateTimeField(auto_now=True, verbose_name="更新时间")def __str__(self):return self.nameclass Meta:verbose_name = verbose_name_plural = '班级'   

然后进行同步数据库操作,在命令行输入:

python manage.py makemigrations
python manage.py migrate

下面我现在一个views.py文件中写一个视图函数,讲解orm基本的增删改操作。记得给函数配置url,通过url调取函数实现视图函数的功能。

def orm_test(request):# 新增一个名字为1901的一个班级,create是新增方法,里面可以接受多个字段参数# Class.objects.create(name="1901")# 同时新增一个学生和班级操作# 新增一个班级名称为1903的班级,返回一个班级实例cls_instance = Class.objects.create(name="1903")# stu_info左边的key要和Student模型字段对应上,因为cls是外键,所以要对应一个班级的实例stu_info = {"name":"静静","age": "18","score":"67.50","email": "123@qq.com","introduce": "我是静静","cls": cls_instance}Student.objects.create(**stu_info)# 将名字为1901的班级名称改为1901_xiu,filter为过滤,支持多个参数,update是更新方法,支持多个参数# Class.objects.filter(name="1901").update(name="1901_xiu")# 将名字为1901_xiu的班级删除掉,delete是删除方法# Class.objects.filter(name="1901_xiu").delete() 

web表格增删改_白话django之数据的增删改相关推荐

  1. Django之数据表增删改查

    Django数据增删改查: 上课代码 from django.shortcuts import render,HttpResponse# Create your views here. from ap ...

  2. web端获取微信小程序云数据库数据实现增删改查等操作

    获取小程序数据库 前言 一.微信小程序Web SDK 1.微信官方示例 2.未登录模式注意事项 二.完整流程演示 1.开启云数据库访问权限 2.编写云函数 3.web前端引入js 4.web页面js访 ...

  3. sql跨表查询_白话django之ORM的查询语句

    教程源码:z991/django_turital 在日常开发中,数据库的增删改查(CDUR)中,查询需求偏多,所以查询的语法比增删改操作多得多,尤其是跨表关联查询,可以让代码精简很多年. 直接上代码吧 ...

  4. SQL Server创建数据库和数据的增删改查

    SQL Server创建数据库和数据的增删改查 本文是针对数据的增删改查,数据的创建 首先我们使用命令创建sql server数据库 D盘新建一个文件夹DB use master go --创建数据库 ...

  5. Django框架(三)—— orm增删改查、Django生命周期

    orm增删改查.Django生命周期 一.orm介绍 1.什么是orm ORM即Object Relational Mapping,全称对象关系映射. 2.使用orm的优缺点 优点: 不用写SQL语句 ...

  6. Django框架(三)-- orm增删改查、Django生命周期

    一.orm介绍 1.什么是orm ORM即Object Relational Mapping,全称对象关系映射. 2.使用orm的优缺点 优点: 不用写SQL语句 开发效率高 缺点: SQL的效率低 ...

  7. Django 02 :部门管理 【面板设计(Bootstrap)+部门的增删改查(Django+MySQL)】

    主题:用户管理系统 文章目录 一.新建项目 1.创建Django项目 2.创建并注册app 3.设计表结构 4.在MySQL中生成表 4.1.连接MySQL,生成数据库 4.2.修改配置文件(连接My ...

  8. shiro 同时实现url和按钮的拦截_一个“保存”按钮同时存在“增删改”三种操作,该如何去实现?...

    一般情况下,对表格中的数据进行"增删改"操作,都是直接操作数据库.现在有些项目因为设计或者优化的缘故,不对表格中的数据进行"增删改",而是通过最后"保 ...

  9. Vue+ElementUI纯前端技术实现对表格数据的增删改查

    Vue+ElementUI纯前端技术实现对表格数据的增删改查 页面展示效果 一.页面结构 分为三个部分 head body 以及script 一般我个人是在head中引入一些组件库 , 还有一些样式 ...

最新文章

  1. 2017.4.18 静态代码分析工具sonarqube+sonar-runner的安装配置及使用
  2. android 是否允许打印debug级别日志的开关_Android学习——日志使用
  3. [I2C]I2C总线协议图解
  4. 【ARM】Tiny4412裸板编程之LED(二)
  5. 搜索推荐中的召回匹配模型综述(一):传统方法
  6. 如何计算机械人工作量,修订后太原理工大学本科教学工作量计算办法
  7. 浅谈多线程——NSThread
  8. android群英传神兵利器pdf,《Android群英传:神兵利器》勘误
  9. 几台pc打造超级计算机,324台Mac Pro打造超级计算机
  10. Oracle数据备份和恢复
  11. pat04-树7. Search in a Binary Search Tree (25)
  12. 22. 用户身份切换用户的特殊 shell与 PAM模块
  13. mysql 查询用户权限
  14. spark sql 对接 HDFS
  15. Delphi7调用百度API
  16. 向死而生的微信视频号,逆风翻盘的2020
  17. matlab速成学习
  18. 网站文章采集器-万能文章采集器
  19. eclipse IED的优化(gc.log)
  20. R语言和Julia以及Python使用Feather包共享数据

热门文章

  1. MySQL可不可以直接定义程序_mysql8 参考手册-定义存储程序
  2. 公司内多个公众号实现账号互通(UnionID机制处理)
  3. Javascript第四章定义函数的形式、回调函数第五课
  4. gitee添加成员_成员权限管理,到底能有多精细?
  5. properties 配置回车_非常全面的讲解SpringCloud中Zuul网关原理及其配置,看它就够了! - 风平浪静如码
  6. java形参、实参、值传递、引用传递
  7. .net在web.config中设置网站编码格式
  8. [BZOJ4542] [Hnoi2016] 大数 (莫队)
  9. scroll jquery
  10. 关于session校验在项目中的使用