ORM对象关系型映射的用法 -- Django模型

1.什么是ORM关系型映射

ORM 全拼Object-Relation Mapping.

中文意为 对象-关系映射.

主要实现模型对象到关系数据库数据的映射.

2.Django数据类型

类型 说明
AutoField 用于存放integer类型的数字
BooleanField 用于存放布尔类型的数据(Ture或False)
CharField 用于存放字符型的数据,需要指定长度max_length
CommaSeparatedIntegerField 用于存放用逗号隔开的 integer 类型的数据
DateField 日期型,必须是“YYYY-MM-DD”格式
DateTimeField 日期时间型,必须是"YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] "格式。
DecimalField 小数型,用于存放小数的数字。
EmailField 电子邮件类型
FilePathField 文件路径类类型,FilePathFields must have either 'allow_files' or 'allow_folders' set to True.
FloatField 浮点型。用于存放浮点型数据。
IntegerField 用于存放 integer 类型的数字。
BigIntegerField 用于存放大 integer 类型的数字,最大数支持:9223372036854775807
GenericIPAddressField 存放 IP 地址的类型,IPv4 和 IPv6 地址,字符串格式。
NullBooleanField vlaue must be either None, True or False.
PositiveSmallIntegerField Positive small integer
SlugField 需要定义 max_length 值。
SmallIntegerField Small integer
TextField 用于存放文本类型的数据。
TimeField 时间类型。"HH:MM[:ss[.uuuuuu]]" 格式
URLField 用于存放 URL 地址
BinaryField Raw binary data

3.Django模型中设计系统表

from django.db import models

# Create your models here.
class Event(models.Model):
"""活动表"""
name = models.CharField("发布会名称",max_length=100) #发布会名称
limit = models.IntegerField("参加人数") #人数
status = models.BooleanField("状态",default=True) #活动开始状态
address = models.CharField("地址",max_length=100) #地址
start_time = models.DateTimeField("时间") #活动开始时间
create_time = models.DateTimeField(auto_now_add=True) #创建时间 def __str__(self):
return self.name class Guest(models.Model):
"""嘉宾表""" event = models.ForeignKey(Event,on_delete=models.Case) #嘉宾与活动关联
real_name = models.CharField("姓名",max_length=64) #真实姓名
phone = models.CharField("手机号",max_length=16) #手机号
email = models.EmailField("邮箱") #邮箱
sign = models.BooleanField("签到") #签到
create_time = models.DateTimeField(auto_now_add=True) def __str__(self):
return self.real_name

4.迁移数据库

> python manage.py makemigrations
> python manage.py migrate
> 注册后台admin用户
> python manage.py createsuperuser

5.admin后台管理/自定义后台

#在admin.py中完成模型的注册

from django.contrib import admin
from model_app.models import Event,Guest
# Register your models here. class EventAdmin(admin.ModelAdmin):
"""显示出Event数据的字段"""
list_display = ['name','limit','status','address','start_time'] class GuestAdmin(admin.ModelAdmin):
"""显示出Guest数据的字段"""
list_display = ['real_name','phone','email','sign'] admin.site.register(Event,EventAdmin)
admin.site.register(Guest,GuestAdmin)

6.ORM基本数据访问

D:\pydj\guest> python3 manage.py shell 模式下进行

6.1 查询数据
  • 根据主键查询数据

e1 = Event.objects.get()

有局限性:

1.数据库中存在多个数据时,会报错

2.数据库中不存在时数据时,会报错

用法: 用户根据主键查询

e1 = Event.objects.get(id=1)

  • 类似where查询

e1 = Event.objects.filter()

  • 模糊查询

e1 = Event.objects.filter(name__contains="python")

6.2 插入数据

  • 方式一

e1 = Event(id=2,name='朋友',limit=2000,status=True,address='北京水立方',start_time=datetime(2016,8,10,14,0,0))

e1.save

  • 方式二

Event.objects.create(id=2,name='朋友',limit=2000,status=True,address='北京水立方',start_time=datetime(2016,8,10,14,0,0))

6.3 删除数据

  • 先查出数据,后删除

e1 = Event.objects.get(id=1)

e1.delete()

或者 Event.objects.get(id=1).delete()

6.4 更新数据

  • 方式一 查询出数据,后根据字段进行更新 例如:查询phone='13611001101' 的嘉宾,更新 realname='andy2''

e1 = Event.objects.get(phone='13611001101')

e1.realname = 'andy2'

e1.save()

  • 方法二

Event.objects.select_for_update().filter(phone='13611001101').update(realname='andy')

ORM对象关系型映射的用法的更多相关文章

  1. ORM 对象关系映射

    ORM (object relation mapping) 就是将对象数据转换为sql语句并执行 对象关系映射框架 orm 需要做的事情 1 生成创建表的语句 2 插入数据的语句 3 删除数据的语句 ...

  2. Django---静态文件配置,post提交表单的csrf问题(日后细说),创建app子项目和分析其目录,ORM对象关系映射简介,Django操作orm(重点)

    Django---静态文件配置,post提交表单的csrf问题(日后细说),创建app子项目和分析其目录,ORM对象关系映射简介,Django操作orm(重点) 一丶Django的静态文件配置 #we ...

  3. Php ORM 对象关系映射

    ORM的全称是Object Relational Mapping,即对象关系映射.它的实质就是将关系数据(库)中的业务数据用对象的形式表示出来,并通过面向对象(Object-Oriented)的方式将 ...

  4. ORM对象关系映射之GreenDAO源码解析

    上一篇我们学习了GreenDAO的CRUD基本操作,可以说是非常的方便的,而且GreenDAO的效率和性能远远高于其它两款流行的ORM框架,下面是我从官网找的一副它们三个ORM框架之间的性能测试的直观 ...

  5. $Django setting.py配置 ,GET、POST深入理解,三件套,orm对象关系映射简介

    1 django中app的概念: 大学:----------------- 项目  信息学院 ----------app01  物理学院-----------app02 ****强调***:创建的每一 ...

  6. ORM对象关系映射

    ORM 总结: ORM:对象关系映射 作用: 1.将定义数据库模型类--> 数据库表 2.将定义数据库模型类中的属性--->数据库表字段 3.将模型对象的操作(add,delete,com ...

  7. Java 自定义注解实现ORM对象关系映射

    一,ORM概念 ORM即Object Relation Mapping,Object就是对象,Relation就是关系数据库,Mapping映射,就是说Java中的对象和关系数据库中的表存在一种对应关 ...

  8. django-模型之(ORM)对象关系映射(一)

    所谓对象关系映射,就是将数据库的一些名字与python中的一些名字相对应,表名-->类名,字段-->属性,操作(增删改查)-->方法.这样,我们就可以通过对Python代码的编辑来对 ...

  9. ORM对象关系映射之GreenDAO高级用法

    CRUD 增加: dao.insert(Student entity);//添加一个 dao.insertInTx(Student... entity);//批量添加 删除: dao.deleteBy ...

随机推荐

  1. [Cypress] Wait for XHR Responses in a Cypress Test

    When testing interactions that require asynchronous calls, we’ll need to wait on responses to make s ...

  2. ZOJ2724_Windows Message Queue(STL/优先队列)

    解题报告 题意: 看输入输出就非常明确. 思路: 优先队列. #include <algorithm> #include <iostream> #include <cst ...

  3. Cocos2d-x 3.0final 终结者系列教程13-贪食蛇游戏案例(全)

    快过节了.谢谢了屈原,我们爱你. 应该多几个向屈大人一样跳江的,这样我们就能够放假纪念啦. ---------------------------------快过节了.弄个案例,大家最好还是假期做做, ...

  4. Codeforces Round #244 (Div. 2)D (后缀自己主动机)

    Codeforces Round #244 (Div. 2)D (后缀自己主动机) (标号为0的节点一定是null节点,不管怎样都不能拿来用,切记切记,以后不能再错了) 这题用后缀自己主动机的话,对后 ...

  5. 优雅的App全然退出方案(没有不论什么内存泄漏隐患)

    在Android开发过程中,特别是界面比較多的情况下,用寻常的退出方式往往是不能全然退出这个应用,网络上也好多各种退出方案.当中一种应该是被广大开发人员採纳使用,也很的清晰方便.就是在Applicat ...

  6. POJ 3126 Prime Path SPFA

    http://poj.org/problem? id=3126 题目大意: 给你两个四位的素数s和t,要求每次改变一个数字.使得改变后的数字也为素数,求s变化到t的最少变化次数. 思路: 首先求出全部 ...

  7. Head First 设计模式 —— 装饰器模式

    1. 装饰器模式与继承 与装饰器模式相比,继承更容易造成类爆炸: 装饰器模式:利用组合取代继承:

  8. guice基本使用,guice整合guice-servlet,web开发(五)

    介绍 Guice Servlet 为使用web应用程序和Servlet容器提供了一个完整的模式.. Guice's servlet 扩展允许从你的servlet应用中完全淘汰web.xml,并且具有类 ...

  9. 3.TinkPHP中的模型

    1.配置数据库的连接设置 数据库的连接配置项可以在系统的主配置文件中 2.什么是模型? 模型是MVC 三大组成部分的M,作用是负责与数据表达额交互(CRUD) 3.模型的创建 命名规范:不带前缀的标明 ...

  10. css3中的animation属性

    作用:通过给元素添加animation属性,可以赋予该元素动画效果. <!DOCTYPE html><html>    <head>        <styl ...