一. 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. Skywalking总结

    步骤四,完善Agent:你会发现,你在skywalking的Web监控页面看到的项目名称并非你原有的项目名称,而是一个默认的—— Your_ApplicationName.这是因为你还没有配置.打开/ ...

  2. CPU 测评

    PassMark - CPU MarkHigh End CPUs - Updated 22nd of March 2019 Processor CPU Mark Price (USD) Intel C ...

  3. python爬取豆瓣电影首页超链接

    什么是爬虫?  我们可以把互联网比作一张大网,而爬虫(即网络爬虫)便是在网上爬行的蜘蛛.把网的节点比作一个个网页,爬虫爬到这就相当于访问了该页面,获取了其信息.可以把节点间的连线比作网页与网页之间的链 ...

  4. 求x到y的最少计算次数

    链接:https://www.nowcoder.com/questionTerminal/45d04d4d047c48768543eeec95798ed6?orderByHotValue=1& ...

  5. C# 调用TRIO控制器ActiveX教程

    最近项目由于用到上位机与TRIO交互,为了使交互编程方便,使用了TRIO的COM组件.记录一下为方便以后自己使用,同时也方便大家做参考! 组件下载地址(百度云盘):https://pan.baidu. ...

  6. Python实现抽样分布的验证(正态分布、卡方分布、T分布)

    参考链接:https://github.com/v-gazh/LearningStatsGroup/blob/master/week7/week7.ipynb 源地址:https://github.c ...

  7. Mysql索引底层数据结构与算法

    索引是什么 索引是帮助MySQL高效获取数据的排好序的数据结构. 索引存储在文件里 补充知识: 磁盘存取原理: * 寻道时间(速度慢,费时) * 旋转时间(速度较快) 磁盘IO读取效率: * 单次IO ...

  8. js生成一定范围内的随机整数

    Math.floor(Math.random()*(m-n+1)+n) Math.floor(Math.random() * (50 - 1 + 1) + 1): 生成1-50内的随机整数

  9. pdf.js实现图片在线预览

    项目需求 前段时间项目中遇到了一个模块,是关于在线预览word文档(PDF文件)的,所以,找了很多插件,例如,pdf.js,pdfobject.js框架,但是pdfobject.js框架对于IE浏览器 ...

  10. 基于windows 10打造的kali工具集

    基于windows 10打造的kali工具集.iso,适合于习惯使用windows的安全从业者.if you like it,please touch star! 作为安全从业主,Kali都是必备工具 ...