一. 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. Oracle性能调优之物化视图用法简介

    目录 一.物化视图简介 二.实践:创建物化视图 一.物化视图简介 物化视图分类 物化视图分类,物化视图语法和as后面的sql分为: (1) 基于主键的物化视图(主键物化视图) (2)基于Rowid的物 ...

  2. 探索FFmpeg

    Part1 :FFmpeg简介 FFmpeg定义 FFmpeg是一款音视频编解码工具,为开发者提供了大量音视频处理接口. FF指的是"Fast Forward" FFmpeg历史 ...

  3. Navicat MYSQL 建立关联表 保存时遇到 cannot add foreign key constraint

    首先建立user表,如下图 然后建立message表,userid用作外键,关联user表的id 点击上面的外键按钮,添加外键如下 结果保存时报错: cannot add foreign key co ...

  4. 转 Java jar (SpringBoot Jar)转为win可执行的exe程序

    原文链接:http://voidm.com/2018/12/29/java-jar-transform-exe/打包Jar工程 将java项目打包成jar工程,可以是文章以SpringBoot为例po ...

  5. 另一种缓存,Spring Boot 整合 Ehcache

    用惯了 Redis ,很多人已经忘记了还有另一个缓存方案 Ehcache ,是的,在 Redis 一统江湖的时代,Ehcache 渐渐有点没落了,不过,我们还是有必要了解下 Ehcache ,在有的场 ...

  6. Prometheus PromSQL 常用资源

    Prometheus PromSQL 常用资源 PromSQL 使用 运算乘:*除:/加:+减:- 函数 sum() 函数:求出找到所有value的值 irate() 函数:统计平均速率 by (标签 ...

  7. 【题解】Paid Roads [SP3953] [Poj3411]

    [题解]Paid Roads [SP3953] [Poj3411] 传送门:\(\text{Paid}\) \(\text{Roads}\) \(\text{[SP3953]}\) \(\text{[ ...

  8. 【spring boot】spring boot 基于redis pipeline 管道,批量操作redis命令

    spring boot 2.x 使用RedisTemplate 操作 =================================== 1.pom.xml <!--spring2.0集成r ...

  9. Delphi - 10进制16进制相互转换

    10进制转16进制 使用IntToHex可以实现十进制到十六进制的转换,注意这里的参数有两个,第一个表示需要被转换的10进制数,第二个表示转换后用几位来显示16进制数. 代码如下: function ...

  10. python排序 基数排序

    算法思想 基数排序通过按位比较(一般从最低位开始)将元素按照最低位的数放到10个桶中,当所有的元素都这样被处理一次后,在按从0到9的顺序将每个桶的元素再取出来(不关注其他位的,只关注当前位的)这样就完 ...