一. ORM字段   (models.py文件中创建类,继承models.Model)

class Book(models.Model):  # 书籍列表

bid=models.AutoField(primary_key=True)  # 自增主键

bname=models.CharField(max_length=20)  # varchar

price = models.IntegerField()  # int类型的字段

price = models.DateTimeField( auto_now_add=True)  # 年月日时分秒

price = models.DateField(DateField=True)  # 年月日

DateTimeField和DateField都是存放时间类字段的,区别是显示的日期格式不同,

这两个字段括号内都可设置参数,参数也都一样,以下为参数及其含义:

auto_now:每次修改该对象任意内容时,都会修改为当前日期时间

auto_now_add:新建对象时自动添加当前日期时间,该日期永远不会被修改

1. 括号内指定了参数后创建对象时不用我们填写该字段,系统会自动生成时间;

> 注意:auto_now和auto_now_add和default这三个参数时互斥的,一个字段中不能同时设置.

> 补充个执行ORM操作的便捷方法,点击python页面左下角python console,该窗口会加载所有的djago环境,

我们只用在这个窗口中导入model即可使用该文件中的类,代码如下:

from app01 import models

models.Book.objects.all()就可使用.

2. 以上为常用的一些字段,更多字段如下:

> AutoField(Field)

- int自增列,必须填入参数 primary_key=True

> BigAutoField(AutoField)

- bigint自增列,必须填入参数 primary_key=True

> 当model中如果没有自增列,则自动会创建一个列名为id的列

from django.db import models

class UserInfo(models.Model):

# 自动创建一个列名为id的且为自增的整数列

username = models.CharField(max_length=32)

class Group(models.Model):

# 自定义自增列

nid = models.AutoField(primary_key=True)

name = models.CharField(max_length=32)

> SmallIntegerField(IntegerField):

- 小整数 -32768 ~ 32767

> PositiveSmallIntegerField(PositiveIntegerRelDbTypeMixin, IntegerField)

- 正小整数 0 ~ 32767

> IntegerField(Field)

- 整数列(有符号的) -2147483648 ~ 2147483647

> PositiveIntegerField(PositiveIntegerRelDbTypeMixin, IntegerField)

- 正整数 0 ~ 2147483647

> BigIntegerField(IntegerField):

- 长整型(有符号的) -9223372036854775808 ~ 9223372036854775807

> BooleanField(Field)

- 布尔值类型

> NullBooleanField(Field):

- 可以为空的布尔值

> CharField(Field)

- 字符类型

- 必须提供max_length参数, max_length表示字符长度

> TextField(Field)

- 文本类型

> EmailField(CharField):

- 字符串类型,Django Admin以及ModelForm中提供验证机制

> IPAddressField(Field)

- 字符串类型,Django Admin以及ModelForm中提供验证 IPV4 机制

> GenericIPAddressField(Field)

- 字符串类型,Django Admin以及ModelForm中提供验证 Ipv4和Ipv6

- 参数:

protocol,用于指定Ipv4或Ipv6, 'both',"ipv4","ipv6"

unpack_ipv4, 如果指定为True,则输入::ffff:192.0.2.1时候,可解析为192.0.2.1,

开启此功能,需要protocol="both"

> URLField(CharField)

- 字符串类型,Django Admin以及ModelForm中提供验证 URL

> SlugField(CharField)

- 字符串类型,Django Admin以及ModelForm中提供验证支持 字母、数字、下划线、连接符(减号)

> CommaSeparatedIntegerField(CharField)

- 字符串类型,格式必须为逗号分割的数字

> UUIDField(Field)

- 字符串类型,Django Admin以及ModelForm中提供对UUID格式的验证

> FilePathField(Field)

- 字符串,Django Admin以及ModelForm中提供读取文件夹下文件的功能

- 参数:

path,                      文件夹路径

match=None,                正则匹配

recursive=False,           递归下面的文件夹

allow_files=True,          允许文件

allow_folders=False,       允许文件夹

> FileField(Field)

- 字符串,路径保存在数据库,文件上传到指定目录

- 参数:

upload_to = ""      上传文件的保存路径

storage = None      存储组件,默认django.core.files.storage.FileSystemStorage

> ImageField(FileField)

- 字符串,路径保存在数据库,文件上传到指定目录

- 参数:

upload_to = ""      上传文件的保存路径

storage = None      存储组件,默认django.core.files.storage.FileSystemStorage

width_field=None,   上传图片的高度保存的数据库字段名(字符串)

height_field=None   上传图片的宽度保存的数据库字段名(字符串)

> DateTimeField(DateField)

- 日期+时间格式 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]

> DateField(DateTimeCheckMixin, Field)

- 日期格式      YYYY-MM-DD

> TimeField(DateTimeCheckMixin, Field)

- 时间格式      HH:MM[:ss[.uuuuuu]]

> DurationField(Field)

- 长整数,时间间隔,数据库中按照bigint存储,ORM中获取的值为datetime.timedelta类型

> FloatField(Field)

- 浮点型

> DecimalField(Field)

- 10进制小数

- 参数:

max_digits,小数总长度

decimal_places,小数位长度

> BinaryField(Field)

- 二进制类型

二. 字段参数

字段括号内参数都有哪些呢?参考如下内容:

注意: price = models.IntegerField( null=True, blank=True)

注意null和blank的区别: null=True表示在数据库层面可为空,而blank=True则是在django层面限制可

   为空,使用时两者是连用的,否则数据库可空但django不能为空,还是会报错的,反之亦然

参数如下:67

null                数据库中字段是否可以为空

db_column           数据库中字段的列名

default             数据库中字段的默认值

primary_key         数据库中字段是否为主键

db_index            数据库中字段是否可以建立索引

unique              数据库中字段是否可以建立唯一索引

unique_for_date     数据库中字段【日期】部分是否可以建立唯一索引

unique_for_month    数据库中字段【月】部分是否可以建立唯一索引

unique_for_year     数据库中字段【年】部分是否可以建立唯一索引

verbose_name        Admin中显示的字段名称

blank               Admin中是否允许用户输入为空

editable            Admin中是否可以编辑

help_text           Admin中该字段的提示信息

choices             Admin中显示选择框的内容,用不变动的数据放在内存中从而避免跨表操作

ORM属性/字段的更多相关文章

  1. ORM常用字段介绍

    Django中的ORM Django项目使用MySQL数据库 1. 在Django项目的settings.py文件中,配置数据库连接信息: DATABASES = { "default&qu ...

  2. Django(ORM常用字段)

    day68 参考:http://www.cnblogs.com/liwenzhou/p/8688919.html 1. Django ORM常用字段:             1. AutoField ...

  3. Django框架 之 ORM 常用字段和参数

    Django框架 之 ORM 常用字段和参数 浏览目录 常用字段 字段合集 自定义字段 字段参数 DateField和DateTimeField 关系字段 ForeignKey OneToOneFie ...

  4. python 之 Django框架(ORM常用字段和字段参数、关系字段和和字段参数)

    12.324 Django ORM常用字段 .id = models.AutoField(primary_key=True):int自增列,必须填入参数 primary_key=True.当model ...

  5. Django中ORM常用字段及字段参数

    Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据 ...

  6. Django orm常用字段和字段参数

    1.Object Relational Mapping(ORM) 1.1ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象 ...

  7. 06 ORM常用字段 关系字段 数据库优化查询

    一.Django ORM 常用字段和参数 1.常用字段 models中所有的字段类型其实本质就那几种,整形varchar什么的,都没有实际的约束作用,虽然在models中没有任何限制作用,但是还是要分 ...

  8. Django之ORM属性类型和约束条件

              ORM属性类型: 1. CharField 字符串字段, 用于较短的字符串. CharField 要求必须有一个参数 maxlength, 用于从数据库层和Django校验层限制该 ...

  9. [源码]Literacy 快速反射读写对象属性,字段

    Literacy 说明 Literacy使用IL指令生成方法委托,性能方面,在调用次数达到一定量的时候比反射高很多 当然,用IL指令生成一个方法也是有时间消耗的,所以在只使用一次或少数几次的情况,不但 ...

随机推荐

  1. Beta冲刺(7/7)——2019.5.29

    作业描述 课程 软件工程1916|W(福州大学) 团队名称 修!咻咻! 作业要求 项目Alpha冲刺(团队) 团队目标 切实可行的计算机协会维修预约平台 开发工具 Eclipse 团队信息 队员学号 ...

  2. c++小学期大作业攻略(四)任务系统+站内信

    虽然比最早的预定晚了整整一个星期但这核心功能最后一篇终于还是来了. 如果你已经经历了用户系统的洗礼,相信代码实现应该已经没有太大的难度,所以我们重点关注一下设计好的流程. 一.任务系统 首先是新建任务 ...

  3. D-Bus

    D-Bus三层架构 D-Bus是一个为应用程序间通信的消息总线系统, 用于进程之间的通信.它是个3层架构的IPC 系统,包括: 1.函数库libdbus ,用于两个应用程序互相联系和交互消息. 2.一 ...

  4. Web应急:移动端劫持

    PC端访问正常,移动端访问出现异常,比如插入弹窗.嵌入式广告和跳转到第三方网站,将干扰用户的正常使用,对用户体验造成极大伤害. 现象描述 部分网站用户反馈,手机打开网站就会跳转到赌博网站. 问题处理 ...

  5. MobaXterm的安装和使用

    MobaXterm的安装和使用 安装 1 下载网址:https://mobaxterm.mobatek.net/,选择“Download”,选择免费版的下载. 2 解压压缩包,双击exe文件安装软件, ...

  6. 【转】Visual Studio Code(VS code)你们都在用吗?或许你们需要看一下这篇博文

    写在前面 在前端开发中,有一个非常好用的工具,Visual Studio Code,简称VS code. 都不用我安利VS code,大家就会乖乖的去用,无数个大言不惭的攻城狮,都被VS code比德 ...

  7. aspose.cells导出Demo

    /// <summary> /// 导出excel /// </summary> /// <param name="list"></par ...

  8. Python: 截屏

    最近项目中想实现截屏功能,使用的笔记本是高清屏,实际屏幕设置成了150%,所以在截屏的时候遇到个各种问题. 最开始使用PIL ImageGrab来截取屏幕,如果本来是100%的设置没有问题,能截取到全 ...

  9. 深入挖崛:mysql主从复制原理

    一.基本原理 MySQL复制过程分成三步: 1).master将改变记录到二进制日志(binary log).这些记录过程叫做二进制日志事件,binary log events: 2).slave将m ...

  10. Gin-Go学习笔记六:Gin-Web框架 Api的编写

    Api编写 1>     Gin框架的Api返回的数据格式有json,xml,yaml这三种格式.其中yaml这种格式是一种特殊的数据格式.(本人暂时没有实现获取节点值得操作) 2>    ...