03-Django模型类
ORM框架:对象-关系-映射
将面向对象语言程序中的对象自动持久化到关系数据库中。本质就是将数据从一种形式转换到另外一种形式
O表示Object 对象类
R表示Relations 关系,关系数据库中的表
M表示Mapping 映射,它的作用就是建立O和R之间的联系
通过类和对象操作数据库表,不需要写sql语句
在Django中已经内置了ORM框架,这个框架将类和数据表进行对应起来,只需通过类和对象就可以对数据表进行操作,也可以通过设计的模型类生成数据库中的表
模型类
1. 设计模型类
from django.db import models
# Create your models here.
class BookInfo ( models.Modeles ):
"""
图书模型类
1.图书名称,CharField 说明是一个字符串,max_length字符串的最大长度,与数据库表对应
2.出版日期,DateField是一个日期类型
数据里表里还有一个主键id,id在Django里会自动生成,不需要定义
"""
btitle = models.CharField ( max_length=20 )
bpub_date = models.DateField ()
2、根据模型类生成表
Django项目默认使用的数据库是sqlite3,可以在settings里看到,在项目下会生成一个db.sqlite3,如何打开?
1)安装
sudo apt-get install sqliteman
2)输入命令sqliteman 回车就会打开
3)File--open,选择db.sqlite3文件打开
根据模型类生成的表,表名是应用名_模型类名小写
3、根据模型类操作数据库表的增删改查
进入项目的shell环境
命令:python manage.py shell
- 向表里插入数据
from booktest.models import BooKInfo # 应用名 类名
b=BookInfo() # 定义一个BookInfo类对象
b.btitle='红楼梦' # 定义b对象的属性并赋值
from datetime import date
b.bpub_date = date(1990,1,1) # 定义出版日期
b.save()
- 查表里的数据
b2=BookInfo.objects.get(id=1)
type(b2)
b2.btitle # 回车显示 红楼梦
- 更新数据库表
b2.bpub_date=date(1990,10,10)
b2.save()
- 删除数据
b2.delete()
4、模型类关系和关系查询
(多表之间有关联)
# 人物类
# 人物名 hname
# 性别 hgender
# 年龄 hage
# 关系属性 hbook 建立图书类与人物类之间的一对多的关系 的属性
class HeroInfo(models.Models):
hname=models.CharField(max_length=20)
# default 指定默认值,False代表男
hgender=models.BooleanFiled(defalut=False)
hbook=models.ForeignKey('BookInfo') # 建立两表之间的关联
-->生成迁移文件-->根据迁移文件生成表,hbook在生成的表后,表里的字段对应为hbook_id,固定格式:关系属性名_id
-->插入数据
from booktest.models import BooKInfo,HeroInfo b = BookInfo()
b.btitle='红楼梦'
from datetime import date
b.bpub_date = date(1990,1,1)
b.save()
h = HeroInfo()
h.hname='林黛玉'
h.hgender=True
h.hbook_id = b # 指定book表里的主键id
h.save() h2=HeroInfo() # 在增加一条数据
h2.hname='贾宝玉'
h2.hbook=b
h2.save()
03-Django模型类的更多相关文章
- Django模型类Meta元数据详解
转自:https://my.oschina.net/liuyuantao/blog/751337 简介 使用内部的class Meta 定义模型的元数据,例如: from django.db impo ...
- 7.Django模型类的定义和管理
Django的模型类是给ORM层服务的 1.每个数据模型都是django.db.models.Model的子类. 2.它的父类Model包含了所有必要的和数据库交互的方法,并提供了定义数据库字段的语法 ...
- django模型类
模型类 ORM django中内嵌了ORM框架,ORM框架可以将类和数据表进行对应起来,只需要通过类和对象就可以对数据表进行操作. 在Django中主要是设计类:模型类. ORM另外一个作用:根据设计 ...
- Django(十)模型:django模型类对数据库的:增/删/改/查、自关联、管理器、元选项(指定表名)
一.插入.更新和删除 调用一个模型类对象的save方法的时候就可以实现对模型类对应数据表的插入和更新. 调用一个模型类对象的delete方法的时候就可以实现对模型类对应数据表数据的删除. 二.自关联 ...
- 03 Django模型层: 常用(非常用)字段和参数
Django模型层: 常用(非常用)字段和参数 1 ORM字段 AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为i ...
- Django | 模型类变更后生成迁移文件,报错:You are trying to add a non-nullable field 'BookName' to BookInfo without a default....
报错: You are trying to add a non-nullable field 'BookName' to BookInfo without a default; we can't do ...
- django 模型类的常见字段约束,以及filter 过滤和查询
null 不设置时默认设置为False.设置为True时,数据库表字段中将存入NULL的记录. null和blank组合使用,null=True,blank=True,表示该字段可以为空 blank ...
- Django模型类之models字段类型和参数以及元数据meta
models之字段类型和参数 示例: # class Test(models.Model): # courses_test # """测试学习用""& ...
- 8.Django模型类例子
这里定义4个模型 作者:一个作者有姓名 作者详情:包括性别,email,出生日期, 出版商:名称,地址,城市,省,国家,网站 书籍:名称,日期 分析: 作者详情和作者一对一的关系 一本书可以有多个作者 ...
- Django模型层Meta内部类详解
Django 模型类的Meta是一个内部类,它用于定义一些Django模型类的行为特性.以下对此作一总结: abstract 这个属性是定义当前的模型类是不是一个抽象类.所谓抽象类是不会对应 ...
随机推荐
- 丢给你一个txt并同时获取你shell
丢给你一个txt并同时获取你shell 0x00:回顾 <文本编辑器Vim/Neovim被曝任意代码执行漏洞> 听闻很多人知道这个漏洞,但是有一部分人能复现成功,一部分人复现不出来.这里我 ...
- Enum的简单扩展
1 添加一个描述的Attribute public enum MessageResult { [System.ComponentModel.Description("未通过")] ...
- Python将mongodb导出的bson文件转为字典对象
Python将mongodb导出的bson文件转为字典对象 安装bson包, sudo pip install bson 示例 # 解决编码问题 import sys reload(sys) sys. ...
- MySQL性能分析之Explain
目录 Explain基础 Explain进阶 Explain基础 关于explain命令相信大家并不陌生,具体用法和字段含义可以参考官网explain-output ,这里需要强调rows是核心指标, ...
- JavaScript 基础知识 表达式和运算符
表达式的概念:将同类型的数据(如常量.变量.函数等),用运算符号按一定的规则连起来的.有意义的式子称为表达式 一.原始表达式 最简单的表达式,是表达式的最小单位.JavaScript中的原始表达式包含 ...
- kafka入门(三)备份
一.相关概念 备份相关的角色 Kafka消息备份分三个角色:分别是Leader副本.Follower副本.ISR集合 Leader副本 负责直接响应client端的读写请求,即和生产者和消费者直接对接 ...
- PLT与GOT
0x01 什么是PLT和GOT 名称: PLT : 程序链接表(PLT,Procedure Link Table) GOT : 重局偏移表(GOT, Global Offset Table) 缘由: ...
- 后端访问sso后,如何返回前端vue页面(后端redirect跳转,vue代理,axios带参)
由于项目要加上公司的sso,出现的一系列问题,找到解决办法,在此记录一下.可能并不适合其他项目,给个参考. 前提: 前端是vue.js,后端springboot sso配置需要增加公司自己的maven ...
- Java编程思想:简单的泛型
import java.util.ArrayList; import java.util.Random; public class Test { public static void main(Str ...
- sql server 2382端口问题
前两天在微软下载了官方示例数据库AdventureWorksDW2008R2及它的OLAP项目:AdventureWorks 2008R2 Analysis Services Project < ...