Django 数据库综合运用

  • 9.7 综合运用
    • 9.7.1 准备数据模型
    • 9.7.2 准备数据

9.7 综合运用


9.7.1 准备数据模型

  • models.py
from enum import uniqueimport blank as blank
from django.db import models# Create your models here.class User(models.Model):# unique=True 唯一索引不允许重复 blank=False 该值不允许为空username = models.CharField(max_length=20, unique=True, blank=False)age = models.SmallIntegerField(default=0)phone = models.CharField(db_index=True, blank=True, default=0, max_length=20)email = models.EmailField(default='')info = models.TextField()# auto_now_add=Tru 创建时添加时间 该时间只会更新一次create_time = models.DateTimeField(auto_now_add=True)# 更新操作将会修改时间update_time = models.DateTimeField(auto_now=True)def __str__(self):return str([self.username, self.age, self.phone, self.email, self.info, self.create_time, self.update_time])# 一对一表关系 (需要设置 on_delete)
class Userprofile(models.Model):# 如果要声明 on_delete 那么 blank null 都要为 Trueuser = models.OneToOneField(User, blank=True, null=True, on_delete=models.SET_NULL)birthday = models.CharField(max_length=50, blank=True, default='')# 一对多表关系 (需要设置 on_delete)
class Userlog(models.Model):user = models.ForeignKey(User, related_name='user_log', blank=True, null=True, on_delete=models.SET_NULL)content = models.TextField()created_time = models.DateTimeField(auto_now_add=True)# 多对多关系 (不用设置 on_delete)
class Group(models.Model):user = models.ManyToManyField(User, related_name='group')name = models.CharField(max_length=20)created_time = models.DateTimeField(auto_now_add=True)

9.7.2 准备数据

  • views.py
import views as views
from django.shortcuts import render# Create your views here.
from django.views import View
from app.models import User, Userprofile, Userlog, Groupclass Index(View):def get(self, request):user = User()user.username = '小钟'user.age = 21user.phone = '12345678'user.email = 'xxx@qq.com'user.info = '伟大的好大好大互动哈偶都哈维活动'user.save()user_profile = Userprofile()user_profile.user = useruser_profile.birthday = '2001.08.10'user_profile.save()user_log = Userlog()user_log.user = useruser_log.content = '这是一份平平无奇的日志不信你看,但是好像它并没有写什么'user_log.save()user_group = Group()user_group.user = useruser_group.name = '艾欧尼亚'user_group.save()return render(request, 'index.html', {"msg": '成功!'})
  • ORM 查询
import datetime
from django.shortcuts import render# Create your views here.
from django.views import View
from app.models import User, Userprofile, Userlog, Groupclass Index(View):def get(self, request):# 查询xiaozhong = User.objects.get(pk=1)           # 或者   xiaozhong = User.objects.all()[0]data = xiaozhong.user_log.values('content')    # user_log 为你创建关系(一对多)时的别名(related_name='user_log')print(data)# 集合查询user = User.objects.all()print(list(user))# 过滤查询user = User.objects.filter(username='小钟', id=1)print(user)# 过滤附加条件查询 年龄大于等于 22 的排除user = User.objects.all().exclude(age__gte=22)print(user)# 模糊查询user = User.objects.filter(username__contains="钟")print(user)# group 组查询user = User.objects.all()[0]groups = user.groupprint(groups.values('name'))# user = User.objects.raw('')return render(request, 'index.html', {"msg": '成功!'})
  • 原生 sql 查询
import datetime
from django.shortcuts import render# Create your views here.
from django.views import View
from app.models import User, Userprofile, Userlog, Groupclass Index(View):def get(self, request):# 查询表所有信息user = User.objects.raw('select * from app_user')print(list(user))# 反向查询  查询 user_log 表中 id 为 1 的 User 表中的信息 user = User.objects.filter(user_log__id=1)print(user)# 聚合查询user = User.objects.all().aggregate(Avg('age'))print(user)return render(request, 'index.html', {"msg": '成功!'})

Django 数据库综合运用(十四)相关推荐

  1. 数据库原理(十 四)- 数据库的实施和维护

    数据库原理(十 四)- 数据库的实施和维护 前言 数据的载入和应用程序的调试 数据库的试运行 数据库的运行和维护 借鉴 前言 完成数据库的物理设计之后,设计人员就要对数据库系统进行实施和试运行,在试运 ...

  2. 达梦数据库亮相第十四届中国国际软件博览会

    ****部长参观达梦数据库展位 6月2日,在第十四届中国国际软件博览会上,****部长饶有兴致地参观了达梦数据库展位,并鼓励企业要勤勉努力,为国家作出更大贡献.本届软博会由**.国家发展和改革委员会. ...

  3. 全国计算机等级考试三级数据库技术(十四)

    考点分析 ◆在考试中一般情况下会出现在选择题,填空题部分. ◆常考知识点有: 1.了解决策支持系统的发展及演化 2.掌握数据仓库的概念与特性及元数据内容 3.熟悉数据仓库设计需求.数据模型和设计步骤 ...

  4. 数据库表设计的十四技巧

    1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对 应且只对应一个实体.在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证 ...

  5. 数据库设计(降龙十四招式)

    1.原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体. 在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对 ...

  6. 万能数据库查询分析器使用技巧之(十四)

      万能数据库查询分析器使用技巧之(十四)                马根峰           (广东联合电子服务股份有限公司, 广州 510300) 摘要     本文详细地介绍了" ...

  7. 孤荷凌寒自学python第五十四天使用python来删除Firebase数据库中的文档

    孤荷凌寒自学python第五十四天使用python来删除Firebase数据库中的文档 (完整学习过程屏幕记录视频地址在文末) 今天继续研究Firebase数据库,利用google免费提供的这个数据库 ...

  8. CCNP-第十四篇-BGP综合实验

    CCNP-第十四篇-BGP综合实验 大家好呀,学了那么长时间的BGP,又是一个巨大分水岭,那怎么能没综合实验呢? 答案以及个人录制视屏(数字那个视频因为录制软件的问题看不到命令行可以直接看后面的,不喜 ...

  9. laravel框架连接Oracle,laravel5.8(十四)连接oracle数据库

    首先确定你的PHP已经支持oracle数据库的链接.PHP需要安装OCI8扩展. 确定PHP可以链接ORACLE数据库之后.我们使用composer安装laravel支持oracle链接的插件 yaj ...

最新文章

  1. 【中文字幕】加州理工《数据学习:机器学习课程》视频及ppt分享
  2. PYTHON高级全栈开发工程师-老男孩教育
  3. django.template.exceptions.TemplateDoesNotExist: rest_framework/api.html
  4. 算法训练 Pollution Solution(计算几何)
  5. 开学啦!你还焦躁吗?
  6. 递推算法之滚动数组思维方式
  7. Struts2 第9part 通过实现ModelDriven来接收参数
  8. 中国互联网络发展状况统计报告
  9. Python基础---OS模块 (二)
  10. db2和oracle数据同步,DB2与Oracle数据库之间的远程复制(转)
  11. 计算机专业代码qian,专业分类号及学科代码对照表.doc
  12. 2D地图tile纹理自动拼接算法
  13. android图片添加文字,Android给图片加文字和图片水印
  14. 好刊邀稿:【MDPI 出版社】2区SCI,领域广,2-3个月左右录用
  15. WRF users guide Chap5
  16. Practice II 字符串
  17. android获取整体存储空间大小,Android 获取剩余存储空间
  18. 微信开放平台之公众号第三方平台开发及全网发布验证
  19. 第9章 梦的初现——开发回合制游戏《勇者斗恶龙》
  20. micro的介绍、安装与使用

热门文章

  1. 桂电全国计算机设计大赛获奖名单,广西教育厅网:桂电学子在2019年全国大学生电子设计竞赛中再创佳绩...
  2. YOLO-入门-简单理解
  3. 即构4周年:我们登上了音视频更高的山峰
  4. Google访问网站危险处理
  5. 在idea中用Tomcat访问不了谷歌Internet
  6. (附源码)springboot呼伦贝尔旅游网站的设计与实现 毕业设计091833
  7. php操作常用class集合,[PHP]经常用到的实用函数集合
  8. ECharts漏斗图(详细示例——满满的注释)
  9. docker 导出镜像命令
  10. foodie-dev.pdman.json 大家有需要的可以评论区留下邮箱