在django项目中,其自带了ORM(Object Relation Mapping)对象关系映射框架,我们在django项目下app的models模块下对类进行操作,通过ORM会将我们对类的操作转化为具体的数据库sql语句,继而实现对数据库的操作。

1. 数据模型类的简单创建:

在django项目下的app的models模块下:

  注意:实现orm映射的前提是创建的类必须继承自django.db包下的models模块的Model类。

#  1.导入模块

from django.db import models

# 2.创建类,继承  --> 对应数据库操作是创建表,表名字为“app名+类名”, 名字自动全部转换为小写;

# sql语句: create table book_app_bookinfo(字段信息);

class BookInfo(models.Model):

  pass

  '''

  也可通过元选项自定义在数据库中创建的表名,意义不大。

  class Meta:

    db_table = 'my_tablename'

  '''

# 3.设计好了数据模型的类,即相当于创建好了表。但是我们发现上面这张表设计的时候并没有设计表的字段,这显然是不对的,下面进行字段的设计

class BookInfo(moels.Model):

  # 设计字段名为bname, 约束字段类型为char,最大长度为20

  bname = models.CharField(max_length=20)

  bisDelete = models.BooleanField(default=false)  # 逻辑删除,默认false

# 4.模型类已经完成,再将models模块的内容进行迁移即可执行ORM转换的sql语句,对数据库进行对应操作

在命令行下,进入当前django项目所在的(虚拟)环境,执行以下:

  $ django-admin mkmigrations      # 生产迁移文件(在django项目的app目录下的migrations目录下可看到生产了对应的迁移文件)

  $ django-admin migrate        # 执行迁移(即执行了对应的sql语句)

查看数据库,可以看到当前的数据库中新增了一张表book_app_bookinfo,主键id我们并没有设计,会自动给我们设计好。

2.数据模型类的映射关系:

  app名:book_app

  类名:BookInfo   -->表名:book_app_bookinfo

  类属性创建时的方法:CharField/BooleanField  -->字段属性: char/bool

  方法的参数选项:max_length/default  -->字段属性的约束选项

  [字段名] = models.[字段属性]([属性约束选项])

3.常用字段属性:

  AutoField  -->自动增长的IntegerField,通常不指定,django会自动创建,auto_increment

  CharField  -->字符串类型,必须有(max_length=[xx])参数

  BooleanField  -->布尔类型,不能为空(default=[ture/false])

  DateField  -->日期类型,参数:auto_now:自动设置为最后一次修改的时间戳  auto_now_add:自动设置为第一次创建时的时间戳

  DateTimeField/TimeField  -->日期类型,参数同DateField

  SamllIntegerField  -->整数类型,对应tinyint/smallint/int/bigint

  Decimal  -->小数类型,必须指定整数位和小数位(例: (max_digits=None,decimal_places=None))

  BinaryField  -->二进制类型

  FloatField  -->浮点类型

  

4.常用字段属性选项:

  primary_key  -->默认为False,True表示为主键,一般AutoField使用

  null  -->默认为False,True表示该字段可以为空(添加数据时该字段可以不设置)

  blank  -->默认为False,True表示添加数据时该字段的值可以为空值

  default  -->设置默认值

  max_length  -->最大长度

Django项目的ORM操作之--数据模型类创建的更多相关文章

  1. Django项目的ORM操作之--模型类数据查询

    1.查询基本格式及理解: 类名.objects.[查询条件] 例如我们要查询数据库中一张表(bookinfo)的所有数据,sql语句为:select * from bookinfo, 对应模型类的操作 ...

  2. Django学习之ORM操作

    一.一般操作 二.必知必会13条 返回QuerySet对象的方法有 特殊的QuerySet 返回具体对象的 返回布尔值的方法有 返回数字的方法 三.单表查询之神奇的双下划线 四.ForeignKey操 ...

  3. Django专题之ORM操作2

    Django ORM操作   目录 一般操作 看专业的官网文档,做专业的程序员! 回到顶部 必知必会13条 <1> all(): 查询所有结果 <2> get(**kwargs ...

  4. Python/Django(CBV/FBV/ORM操作)

    Python/Django(CBV/FBV/ORM操作) CBV:url对应的类(模式) ##====================================CBV操作============ ...

  5. Django - 表与ORM操作

    Django - 表与ORM操作 一. 模板语言 模板中也有自己的语言, 该语言可以实现数据展示 - {{ 变量 }} - 循环 {% for i in all_publisher %} {{ for ...

  6. 跨过Nginx上基于uWSGI部署Django项目的坑

    先说说他们的关系,Nginx和uWSGI都是Web服务器,Nginx负责静态内容,uWSGI负责Python这样的动态内容,二者配合共同提供Web服务以实现提高效率和负载均衡等目的.uWSGI实现了多 ...

  7. 初学Django基础02 ORM操作

    django的ORM操作 之前我们知道了models.py这个文件,这个文件是用来读取数据结构的文件,每次操作数据时都走这个模块 常用字段 AutoField int自增列,必须填入参数 primar ...

  8. Django 模型层 ORM 操作

    运行环境 1. Django:2.1.3 version 2. PyMysql: 0.9.3 version 3. pip :19.0.3 version 4. python : 3.7 versio ...

  9. docker笔记(3) ------Django项目的docker部署

    2019-01-12   14:23:18 django容器连接到mysql_server容器分析:原myblog项目使用sqlit3数据库,使用mysql容器前需要在django中加入pymysql ...

随机推荐

  1. 【Python】IO编程

    文件读写 StringIO和BytesIO 操作文件和目录 序列化 学习廖老师的py官网的笔记 1.stream的概念.数据交换通常需要建立两根“水管”. 2.同步IO和异步IO.异步性能高,但是编程 ...

  2. Apache httpd服务部署

    1. yum安装 yum install httpd yum install httpd-devel yum install httpd-manual 2. 配置 vim /etc/httpd/con ...

  3. 《Java程序设计》实验3

    20145318 <Java程序设计>实验3 实验内容 使用 git 上传代码 使用 git 相互更改代码 实现代码的重载 PSP 队友链接 http://www.cnblogs.com/ ...

  4. 机器学习:让我们彻底搞懂CNN【转】

    本文转载自:http://115.com/182920/T1266078.html 机器学习:让我们彻底搞懂CNN 上世纪科学家们发现了几个视觉神经特点,视神经具有局部感受眼,一整张图的识别由多个局部 ...

  5. ISSCC 2017论文导读 Session 14 Deep Learning Processors,A 2.9TOPS/W Deep Convolutional Neural Network SOC

    最近ISSCC2017大会刚刚举行,看了关于Deep Learning处理器的Session 14,有一些不错的东西,在这里记录一下. A 2.9TOPS/W Deep Convolutional N ...

  6. ubuntu16.04下安装mysql详细步骤

    1.如果要搭建服务器先去购买一个云主机,比如阿里云.京东云.新网等等都有卖.这里推荐使用京东云服务器,因为最近在搞活动.一元可体验两个月(可能现在活动已经过了,但在京东云里有免费领一个月的,学生机也有 ...

  7. 通过Fiddler进行手机抓包

    通过Fiddler进行手机抓包 通过Fiddler抓包工具,可以抓取手机的网络通信,但前提是手机和电脑处于同一局域网内(WI-FI或热点),然后进行以下设置: 用Fiddler对Android应用进行 ...

  8. CentOS 7 Fail2ban防暴力破解

    1.安装 yum install epel-release -y yum install fail2ban fail2ban-systemd -y 2.配置 //新建配置 vim /etc/fail2 ...

  9. sscanf输入总结

    2017-08-21 15:09:47 writer:pprp sscanf很好用的,一般配合gets()来使用 /* theme: usage of sscanf writer:pprp date: ...

  10. C#:手把手教你用C#打包应用程序(安装程序卸载程序)

    摘要:本文介绍在C#中手把手教你用C#打包应用程序(安装程序卸载程序) 1:新建安装部署项目 打开VS,点击新建项目,选择:其他项目类型->安装与部署->安装向导(安装项目也一样),然后点 ...