1、创建项目

django-admin startproject my_first_django   # 创建一个名称为my_first_django的项目

命令执行后会产生一个项目名称的文件夹和一个manage.py 文件

manage.py是项目的管理文件。

my_first_django中的结构如下:

                     

Django 开发中一个功能模块用一个应用来实现

2、创建一个应用

python manage.py startapp booktest        # 创建一个booktest的应用

                

应用创建好了以后需要进行注册

修改my_first_django中的setting.py 文件中的INSTALLED_APPS配置项。

运行django的web服务

python manage.py runserver

ORM (Object-Relations-Mapping)简介 ,Django默认内置了ORM框架

3、创建一个图书模型

from django.db import models# Create your models here.# 设计和表对应的类 : 模型类# 图书类
class BookInfo(models.Model):"""图书模型类"""bname = models.CharField(max_length=20)bpub_data = models.DateField()

Django会根据模型类在数据库中创建对应的表

模型类生成表分为两步:

1)生成迁移文件

python manage.py makemigrations

2)执行迁移生成表

python manage.py migrate

                            

数据库中创建的的表名称格式为:应用名_模型类的小写

本实例中的表明为        "booktest_bookinfo"

4、通过模型类操作数据表(增删改查)

1)增加记录

from booktest.models import BookInfo
from datetime import date# 数据库中增加记录
# 1 实例化模型类
# 2 添加实例属性    实例属性的名称需要了模型类中的类属性名称一致
# 3 实例调用save()方法完成记录的插入
b = BookInfo()
b.bname = "天龙八部"
b.bpub_data = data(1990,1,1)
b.save()

2)查询记录

from booktest.models import BookInfo# 查询记录的步骤:
# 1 调用模型类的objects.get()方法 参数为查询条件
# 2 接收1中的返回的结果,类型了模型类的一个实例
# 3 查看 2 中实例的属性即可b2 = BookInfo.objects.get(bname="天龙八部")
print(b2.bname)
print(b2.bpub_data)

(3) 修改记录

from booktest.models import BookInfo# 修改记录的步骤:
# 1 先查询到要修改的记录,得到其实例
# 2 对其实例属性进行修改
# 3 调用save()方法b3 = BookInfo.objects.get(bname="天龙八部")
b3.bname = "天龙八部2"
b3.save()

4) 删除记录

from booktest.models import BookInfo# 修改记录的步骤:
# 1 先查询到要修改的记录,得到其实例
# 2 调用该实例的delete()方法b4 = BookInfo.objects.get(bname="天龙八部2")
b4.delete()

5、添加一对多关系

描述:添加一个英雄类,英雄有姓名,性别,大招和出自的书籍属性,其中出自的书籍是图书表的外键。图书表和英雄表是一对多的关系。

1)创建英雄模型类

from django.db import models# Create your models here.# 设计和表对应的类 : 模型类# 图书类
class BookInfo(models.Model):"""图书模型类"""bname = models.CharField(max_length=20)bpub_data = models.DateField()# 英雄类
class HeroInfo(models.Model):"""英雄模型类"""h_name = models.CharField(max_length=20)h_gender = models.BooleanField(default=False)h_comment = models.CharField(max_length=128)h_book = models.ForeignKey("BookInfo", on_delete=models.CASCADE)

其中models.ForeignKey("BookInfo", on_delete=models.CASCADE),第一个参数为“一”对“多”中的“一”的类名,第二个参数是在删除“一”的时候对“多”的处理方式。models.CASCADE表示在删除“一”时,对“多”采取对应的删除(级联删除)。

on_delete的可取值有以下:

  • CASCADE:这就是默认的选项,级联删除,你无需显性指定它。
  • PROTECT: 保护模式,如果采用该选项,删除的时候,会抛出ProtectedError错误。
  • SET_NULL: 置空模式,删除的时候,外键字段被设置为空,前提就是blank=True, null=True,定义该字段的时候,允许为空。
  • SET_DEFAULT: 置默认值,删除的时候,外键字段设置为默认值,所以定义外键的时候注意加上一个默认值。
  • SET(): 自定义一个值,该值当然只能是对应的实体了

2)更新并执行迁移文件(参照3.1和3.2)

3)添加英雄记录

import os
import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "my_first_django.settings")  # my_first_django 项目名称
django.setup()from booktest.models import BookInfo, HeroInfo
from datetime import dateb1 = BookInfo()
b1.bname = "天龙八部"
b1.bpub_data = date(1989, 10, 5)
b1.save()b2 = BookInfo()
b2.bname = "神雕侠侣"
b2.bpub_data = date(1999, 1, 20)
b2.save()h1 = HeroInfo()
h1.h_name = "乔峰"
h1.h_gender = False
h1.h_comment = "降龙十八掌"
# 注意 在添加英雄的h_book属性时类型为 BookInfo的实例
h1.h_book = b1
h1.save()h2 = HeroInfo()
h2.h_name = "段誉"
h2.h_gender = False
h2.h_comment = "六脉神剑"
h2.h_book = b1
h2.save()h3 = HeroInfo()
h3.h_name = "杨过"
h3.h_gender = False
h3.h_comment = "独臂神功"
h3.h_book = b2
h3.save()h3 = HeroInfo()
h3.h_name = "小龙女"
h3.h_gender = True
h3.h_comment = "睡树枝"
h3.h_book = b2
h3.save()

       

在booktest_heroinfo表中有h_book_id字段,这个字段和类属性中的h_book对应

4)查看英雄的book属性

hero = HeroInfo.objects.get(h_name="小龙女")
print(hero.h_name)
print(hero.h_gender)
print(hero.h_book)
print(hero.h_book.bname)
print(hero.h_book_id)

5)查看某一书名对应的所有英雄

# 查询书籍的对象b1 = BookInfo.objects.get(bname="天龙八部")
print(b1.bname)# 查询书籍对应的所有英雄   使用 b1.heroinfo_set.all() 返回的是一个列表,里面存放的是每个英雄的实例for hero in b1.heroinfo_set.all():print(hero.h_name)print(hero.h_comment)print()

6)查询表里的所有内容

# 返回一个列表,列表里面是每本书的实例
BookInfo.objects.all()

Django模型类操作数据表相关推荐

  1. Django模型类与后台管理

    文章目录 模型类 模型类设计 生成迁移文件 执行迁移生成表 通过模型类操作数据表 后台管理 1.本地化 2.创建管理员 3. 管理员登陆网址 4.注册模型类 5.自定义表单 模型类 模型类设计 在应用 ...

  2. Django框架(3.django设计模型类、模型类生成表、ORM框架简介)

    ORM框架简介 O是object,也就类对象的意思, R是relation,翻译成中文是关系,也就是关系数据库中数据表的意思, M是mapping,是映射的意思.在ORM框架中,它帮我们把类和数据表进 ...

  3. django-关联查询-通过模型类跨表关联查询

    名词的约定 一对多关系中,一方对应的类叫做一类,多方对应的类叫做多类 多类中定义的属性,叫做关联属性 本节例子 图书类 BookInfo 英雄类 HeroInfo 利用模型类联表查询 需要一方的结果, ...

  4. 第四章:Django 模型 —— 设计系统表

    1. Django框架提供了完善的模型(Model )层来创建和存储数据,每一个模型对应数据库中的唯一的一张表. 2. Django 模型基础知识: .每一本模型是一个Python类,继承了djang ...

  5. Django模型层--多表操作

    三种表关系:一对一.一对多.多对多. 一.创建模型 OneToOneField() 一对一 ForeignKey() 一对多 多对一 ManyToManyField() 多对多 #添加外键 一对多 多 ...

  6. 第十章:django模型类(二)

    系列文章目录 第一章 :Django安装与配置虚拟环境 第二章:django各模块的作用以及参数说明 第三章:  Django的路由与视图 第四章:django请求 第五章:django会话 第六章: ...

  7. django模型的连表查询

    在数据库当中,可以通过设置外键的方式将两个表进行连接,如果需要查询数据的时候就需要进行连表查询. 例如:假如我现在有两张表.userinfo 和 usertype,userinfo里面记录了用户的信息 ...

  8. django 模型类的常见字段约束,以及filter 过滤和查询

    null 不设置时默认设置为False.设置为True时,数据库表字段中将存入NULL的记录. null和blank组合使用,null=True,blank=True,表示该字段可以为空 blank ...

  9. 5.Django|模型层--多表关系

    多表操作 文件为 ---->  orm2 数据库表关系之关联字段与外键约束 一对多Bookid title price publish email addr1 php 100 人民出版社 111 ...

最新文章

  1. mysql行级锁测试
  2. 【AndroidStudio】关于SVN的相关配置简介
  3. html 鼠标移动3d视图,HTML5 鼠标悬停3D平面摇晃动效
  4. android 控件覆盖关系,安卓子控件抢占父控件点击事件或者焦点问题
  5. Qt学习之Qt基础入门(下)
  6. Vscode使用npm安装babel
  7. spark任务shell运行_Spark原理与实战(七)部署模式与运行机制
  8. 网页后门危害大 网站安全狗帮助查杀
  9. 上传Excel到HBase数据库(POI、poi-ooxml)
  10. Opencv图像处理(全)
  11. windows常用指令大全
  12. 网页磁贴模板_文本磁贴(登录)模板 (HTML)
  13. 信号完整性与电源完整性分析 第三版 pdf_信号完整性揭秘于博士SI设计手记高清PDF分享...
  14. 程序员找工作,写简历/面试/谈工资都要注意哪些事?
  15. 利用NEO与Unity制作游戏(第1部分)
  16. Doris入门到精通-阶段一(简介安装使用)
  17. 区块链三加一:200个ETH在imToken上怎么没的?
  18. table 表格合并行或列
  19. gpu虚拟化云服务器,gpu云服务器 虚拟化
  20. finally关键字

热门文章

  1. mtk 实际电池测试存在一些电量跳变问题,对一些由于电池特性引起的跳变
  2. jquery中获取复选框的值
  3. HTML5期末大作业:电影影视网站设计——电影介绍(11页) 学生HTML个人网页作业作品下载 个人电影影视网页设计制作 大学生个人电影影视网站作业模板 简单个人电影影视
  4. 数据仓库项目管理面试题整理
  5. 《PyInstaller打包实战指南》制作软件安装包
  6. mermaid(markdown)语法
  7. BOSS系统概念简介
  8. Linux中搭建Redis集群及redis集群配置常见问题总结
  9. 偷个懒,公号抠腚早报80%自动化——2.手撕爬虫定时爬新闻
  10. SpringMVC和SSM整合步骤(最详细)