Django中模型(二)

三、定义模型

1、模型、属性、表、字段间的关系:

一个模型类在数据库中对应一张表;在模型类中定义的属性,对应该模型对照表中的字段。

2、定义属性

A、概述

·django根据属性的类型确定以下信息

·当前选择的数据库支持字段的类型

·渲染管理表单时使用的默认html控件

·在管理站点最低限度的验证

B、

·django会为表增加自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后,则django不会再生成默认的主键列

C、属性命名限制

·遵循标识符规则

·由于django的查询方式,不允许使用连续的下划线

3、库

定义属性时,需要字段类型,字段类型被定义在django.db.models.fields目录下,为了方便使用,被导入到django.db.models中

·使用方式:

·导入from django.db import models

·通过models.Field创建字段类型的对象,赋值给属性

4、逻辑删除

·对于重要数据都做逻辑删除,不做物理删除,实现方法是定义isDelete属性,类型为BooleanField,默认值为False

5、字段类型

·AutoField

·一个根据实际ID自动增长的IntegerField,通常不指定如果不指定,一个主键字段将自动添加到模型中

·CharField(max_length=字符长度)

·字符串,默认的表单样式是 TextInput

·TextField

·大文本字段,一般超过4000使用,默认的表单控件是Textarea

·IntegerField

·整数

·DecimalField(max_digits=None, decimal_places=None)

·使用python的Decimal实例表示的十进制浮点数

·参数说明

·DecimalField.max_digits

·位数总数

·DecimalField.decimal_places

·小数点后的数字位数

·FloatField

·用Python的float实例来表示的浮点数

·BooleanField

·true/false 字段,此字段的默认表单控制是CheckboxInput

·NullBooleanField

·支持null、true、false三种值

·DateField([auto_now=False, auto_now_add=False])

·使用Python的datetime.date实例表示的日期

·参数说明

·DateField.auto_now

·每次保存对象时,自动设置该字段为当前时间,用于"最后一次修改"的时间戳,它总是使用当前日期,默认为false

·DateField.auto_now_add

·当对象第一次被创建时自动设置当前时间,用于创建的时间戳,它总是使用当前日期,默认为false

·说明

·该字段默认对应的表单控件是一个TextInput. 在管理员站点添加了一个JavaScript写的日历控件,和一个“Today"的快捷按钮,包含了一个额外的invalid_date错误消息键

·注意

·auto_now_add, auto_now, and default 这些设置是相互排斥的,他们之间的任何组合将会发生错误的结果

·TimeField

·使用Python的datetime.time实例表示的时间,参数同DateField

·DateTimeField

·使用Python的datetime.datetime实例表示的日期和时间,参数同DateField

·FileField

·一个上传文件的字段

·ImageField

·继承了FileField的所有属性和方法,但对上传的对象进行校验,确保它是个有效的image

6、字段选项

·概述

·通过字段选项,可以实现对字段的约束

·在字段对象时通过关键字参数指定

·null

·如果为True,Django 将空值以NULL 存储到数据库中,默认值是 False

·blanke

·如果为True,则该字段允许为空白,默认值是 False

·注意

·null是数据库范畴的概念,blank是表单验证证范畴的

·db_column

·字段的名称,如果未指定,则使用属性的名称

·db_index

·若值为 True, 则在表中会为此字段创建索引

·default

·默认值

·primary_key

·若为 True, 则该字段会成为模型的主键字段

·unique

·如果为 True, 这个字段在表中必须有唯一值

7、关系

·分类

·ForeignKey:一对多,将字段定义在多的端中

·ManyToManyField:多对多,将字段定义在两端中

·OneToOneField:一对一,将字段定义在任意一端中

·用一访问多

·格式

·对象.模型类小写_set

·示例

grade.students_set

·用一访问一

·格式

·对象.模型类小写

·示例

·grade.students

·访问id

·格式

·对象.属性_id

·示例

·student.sgrade_id

7、元选项

概念:

在模型类中定义Mate类,用于设置元信息

db_table:

定义表名,推荐使用小写字母,默认为项目名(小写)_类名(小写)

ordering:

对象的默认排序字段,获取对象的列表时使用。

ordering[‘id’]          :以id升序排列

ordering[‘-id’]           :以id降序排列

使用排序会增大数据库的开销

Django中模型(二)的更多相关文章

  1. django中模型详解-字段类型与约束条件

    这片博文来详细说明django模型的使用,涉及到django模型的创建,字段介绍,以及django模型的crud操作,以及一对一等操作. 在使用模型之前,我们首先设置数据库选项,django的默认数据 ...

  2. Django中模型(五)

    Django中模型(五) 六.模型查询 1.概述 查询集,表示从数据库获取的对象集合. 过滤器就是一个函数,基于所给的参数限制查询集结果.查询集可以有多个过滤器. 从sql角度来说,查询集合等价于se ...

  3. Django中模型(一)

    Django中模型(一) 一.    基本开发流程 1.       配置数据库 2.       定义模型类:一个模型类都在数据库中对应一张数据表 3.       生成迁移文件 4.       ...

  4. Django中模型(四)

    Django中模型(四) 五.创建对象 1.目的 向数据库中添加数据.当创建对象时,Django不会对数据库进行读写操作,当调用save()方法时,才与数据库交互,将对象保存到数据库中 2.注意 __ ...

  5. Django中模型(三)

    Django中模型(三) 四.模型成员 1.类属性 objects:是Manager类的一个对象,作用是与数据库进行交互. 定义模型类时,没有定义管理器,则默认创建名为objects的管理器. 2.自 ...

  6. django Model模型二及Model模型对数据库的操作

    在django模型中负责与数据库交互的为Model层,Model层提供了一个基于orm的交互框架 一:创建一个最基本的Model from __future__ import unicode_lite ...

  7. Django中模型层中ORM的多表操作

    ORM的多表创建(一对一.一对多,多对多): 1模型创建 实例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄. 作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等 ...

  8. Django中模型层中ORM的单表操作

    ORM概念: MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员 ...

  9. django中模型

    一.django需要使用数据库,则需要安装对应的驱动,比如mysql,则需要安装mysqlclient驱动: pip install mysqlclient 二.在settings.py文件中配置数据 ...

随机推荐

  1. WPF的MediaElement指定Source无法播放问题解决

    最近学wpf,在使用 MediaElement 指定 Source 进行视频播放时,在源码界面可以正常显示,但运行时控件显示空白. 源码界面如下图:(可正常显示) 运行后如下图所示:(控件位置显示空白 ...

  2. c#创建window服务

    Windows服务在Visual Studio 以前的版本中叫NT服务,在VS.net启用了新的名称.用Visual C# 创建Windows服务不是一件困难的事,本文就将指导你一步一步创建一个Win ...

  3. 浏览器获取正确的scrollTop值

    window.pageYOffset 被所有浏览器支持除了 IE 6, IE 7, IE 8, 不关doctype的事, 注IE9 开始支持此属性. window.scrollY 被Firefox, ...

  4. 如鹏网学习笔记(九)JavaScript

    JavaScript笔记 一.JavaScript简介 1,JavaScript是一种计算机编程语言,可以像等其他编程语言那样定义变量,执行循环等. 2,JavaScript代码主要执行在浏览器上,为 ...

  5. Apache Rewrite的主要功能

    #Apache Rewrite的主要功能 #就是实现URL的跳转和隐藏真实地址,基于Perl语言的正则表达式规范.#平时帮助我们实现拟静态,拟目录,域名跳转,防止盗链等 在httpd.conf中去掉下 ...

  6. PHP 如何向关联数组指定的 Key 之前插入元素

    PHP 关联数组可以通过三种方式插入新元素: $array[$insert_key] = $insert_value; $array = array_merge($array, $insert_arr ...

  7. 关于webpack 配置文件找不到

    运行命令  npm run eject 将配置文件解压出来 如果运行这个命令有错的时候,很可能与 git 有关 这时候,打开项目文件夹,显示所有隐藏的文件夹(工具),如果显示了git 的文件夹  删掉 ...

  8. Mac安装Dart的SDK

    最近了解到谷歌推迟Flutter兼容开发iOS.Android移动应用的框架,该框架使用的语音是Dart.作为一个iOS开发者来说,不感兴趣就不正常了,于是开始从学习Dart开始,所有的开发语音其实都 ...

  9. [算法练习]ZigZag Conversion

    题目说明: The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows ...

  10. MUI框架-02-注意事项-适用场景-实现页面间传值

    MUI框架-02-注意事项-适用场景-实现页面间传值 关于开发,我拷贝太多也没什么意义,就请查阅:官方文档:http://dev.dcloud.net.cn/mui/ui/ 快速入门 - 注意事项 有 ...