一、字段名

字段名

类型

参数

AutoField(Field)

- int自增列,

必须填入参数 primary_key=True

BigAutoField(AutoField)

- bigint自增列

必须填入参数 primary_key=True

SmallIntegerField(IntegerField):

SmallIntegerField(IntegerField):

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中提供验证机制

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)

- 二进制类型

注:当model中如果没有自增列,则自动会创建一个列名为id的列,自增列必须为主键,因为mysql一张表中只能有一个自增列。英文详解如下:

'AutoField'

'integer AUTO_INCREMENT',

'BigAutoField'

'bigint AUTO_INCREMENT',

'BinaryField'

'longblob',

'BooleanField'

'bool',

'CharField'

'varchar(%(max_length)s)',

'CommaSeparatedIntegerField'

'varchar(%(max_length)s)',

'DateField'

'date',

'DateTimeField'

'datetime',

'DecimalField'

'numeric(%(max_digits)s, %(decimal_places)s)',

'DurationField'

'bigint',

'FileField'

'varchar(%(max_length)s)',

'FilePathField'

'varchar(%(max_length)s)',

'FloatField'

'double precision',

'IntegerField'

'integer',

'BigIntegerField'

'bigint',

'IPAddressField'

'char(15)',

'GenericIPAddressField'

'char(39)',

'NullBooleanField'

'bool',

'OneToOneField'

'integer',

'PositiveIntegerField'

'integer UNSIGNED',

'PositiveSmallIntegerField'

'smallint UNSIGNED',

'SlugField'

'varchar(%(max_length)s)',

'SmallIntegerField'

'smallint',

'TextField'

'longtext',

'TimeField'

'time',

'UUIDField'

'char(32)',

二、字段中常用参数

null 数据库中字段是否可以为空,注意和blank比较

db_column 数据库中字段的列名

db_tablespace

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中显示选择框的内容,用不变动的数据放在内存中从而避免跨表操作

如:gf = models.IntegerField(choices=[(0, '何穗'),(1, '大表姐'),],default=1)

error_messages 自定义错误信息(字典类型),从而定制想要显示的错误信息;

字典健:null, blank, invalid, invalid_choice, unique, and unique_for_date

如:{'null': "不能为空.", 'invalid': '格式错误'}

validators 自定义错误验证(列表类型),从而定制想要的验证规则

例子:

from django.core.validators import EmailValidator

from django.core.validators import RegexValidator

test = models.CharField(

max_length=32,

error_messages={

'c1': '优先错信息1',

'c2': '优先错信息2',

'c3': '优先错信息3',

},

validators=[

RegexValidator(regex='root_\d+', message='错误了', code='c1'),

RegexValidator(regex='root_112233\d+', message='又错误了', code='c2'),

EmailValidator(message='又错误了', code='c3'), ])

三、Meta信息:

class Meta:

# 数据库中生成的表名称 默认 app名称 + 下划线 + 类名

db_table = "table_name"

# 联合索引

index_together = [("pub_date", "deadline"), ]

# 联合唯一索引

unique_together = (("driver", "restaurant"),)

# admin中显示的表名称

verbose_name = "用名信息"

# verbose_name加s。admin中复数形式

verbose_name_plural = verbose_name

#定义排序规

ordering = "-object_id" #通过object_id做到许排序。

四、model字段格式检查

1、触发Model中的验证和错误提示

(1)Django Admin中的错误信息会优先根据Admin内部的ModelForm错误信息提示,如果都成功,才来检查Model的字段并显示指定错误信息

#model.py文件中

class UserInfo(models.Model):

nid = models.AutoField(primary_key=True)

username = models.CharField(max_length=32)

email = models.EmailField(error_messages={'invalid': '格式错了.'})

这样就会提示格式错误

(2)调用Model对象的 clean_fields 方法

# views.py

def index(request):

obj = models.UserInfo(username='11234', email='uu')

try:

print(obj.clean_fields())

except Exception as e:

print(e)

return HttpResponse('ok')

# Model的clean方法是一个钩子,可用于定制操作,如:上述的异常处理。

(3)Admin中修改错误提示,(也即是用django的form方法)

from django import forms

from django.contrib import admin

from model_club import models

class UserInfoForm(forms.ModelForm):

username = forms.CharField(error_messages={'required': '用户名不能为空.'})

email = forms.EmailField(error_messages={'invalid': '邮箱格式错误.'})

age = forms.IntegerField(initial=1, error_messages={'required': '请输入数值.', 'invalid': '年龄必须为数值.'})

class Meta:

model = models.UserInfo

# fields = ('username',)

fields = "__all__"

class UserInfoAdmin(admin.ModelAdmin):

form = UserInfoForm

admin.site.register(models.UserInfo, UserInfoAdmin)

4.model 字段的更多相关文章

  1. Django model字段类型清单

    转载:<Django model字段类型清单> Django 通过 models 实现数据库的创建.修改.删除等操作,本文为模型中一般常用的类型的清单,便于查询和使用: AutoField ...

  2. odoo Model字段的参数

    odoo Model字段的参数 class Field(object): """ The field descriptor contains the field defi ...

  3. Django model 字段类型及选项解析---转载

    model field 类型1.AutoField() 自增的IntegerField,通常不用自己设置,若没有设置主键,Django会自动添加它为主键字段,Django会自动给每张表添加一个自增的p ...

  4. url分发、isinstance、request.GET请求之QueryDict和urlencode、post和get请求、limit_choices_to(Model字段)

    这个的路径是怎么来的,是有一个个的url路由分发过来的 这两个是相等的,若url后面加括号了,那么前面就不用这个装饰器了:反之,若装饰器使用了,那么这个url后面就不要加括号了 eg:其他的views ...

  5. django中model字段与属性

    model field 类型1.AutoField     一个自增的IntegerField,一般不直接使用,Django会自动给每张表添加一个自增的primary key. 2.BigIntege ...

  6. django【ORM】model字段类型

    1.AutoField 一个自增的IntegerField,一般不直接使用,Django会自动给每张表添加一个自增的primary key. 2.BigIntegerField 64位整数, -922 ...

  7. Django model 字段类型清单

    Django model字段类型清单 Django 通过 models 实现数据库的创建.修改.删除等操作,本文为模型中一般常用的类型的清单,便于查询和使用: AutoField 一个自动递增的整型字 ...

  8. model字段对象和forms字段对象的区别和联系

    一.model字段对象 (一)_meta _meta是django.db.models.options.Options的实例,获取字段对象可通过模型类来进行获取,而_meta可提供如下功能: 获取模型 ...

  9. django的model字段在保存的时候做预处理怎么办?

    django的model字段在保存的时候做预处理怎么办? 比如这个model: class Book(Model): publish_date = DateField() 但是在保存时,用户输入数据是 ...

随机推荐

  1. 关于新手html的认识 以及对table的基本用法

    1.html语言 <!DOCTYPE html> 声明html <!--双标签--> <!--<html 属性名="属性值 " 属性名2=&qu ...

  2. 基于.Net Core的API框架的搭建(1)

    目标 我们的目标是要搭建一个API控制器的项目,API控制器提供业务服务. 一.开发框架搭建 1.开发前准备 开发前,我们需要下载如下软件,安装过程略: (1) 开发工具:VS2017 (2) 数据库 ...

  3. clipboard.js 实现动态获取内容并复制到剪切板

    使用clipboard.js分为以下几个步骤: 1.引入一个clipboard.js的文件: 2.新建一个clipboard对象: 3.点击按钮获取目标对象里面的内容,将其复制到剪切板. 注意:1.目 ...

  4. Unix\Linux | 总结笔记 | 命令_ WC

    wc[选项][参数] wc命令用来计算数字.利用wc指令我们可以计算文件的Byte数.字数或是列数,若不指定文件名称,或是所给予的文件名为“-”,则wc指令会从标准输入设备读取数据. -c或--byt ...

  5. python模拟登录的实现

    本文主要用python实现了对网站的模拟登录.通过自己构造post数据来用Python实现登录过程.   当你要模拟登录一个网站时,首先要搞清楚网站的登录处理细节(发了什么样的数据,给谁发等...). ...

  6. [POI2007]办公楼biu

    Description FGD开办了一家电话公司.他雇用了N个职员,给了每个职员一部手机.每个职员的手机里都存储有一些同事的电话号码.由于FGD的公司规模不断扩大,旧的办公楼已经显得十分狭窄,FGD决 ...

  7. ural1076 Trash 垃圾

    Description You were just hired as CEO of the local junkyard.One of your jobs is dealing with the in ...

  8. 构造 HDOJ 5414 CRB and String

    题目传送门 题意:给两个字符串s,t,可以在s字符串任意位置后面插入字符c(与前面的不同),问是否能够将s转换为t字符串 构造:首先lens > lent 或者 s[1] != t[1] 一定是 ...

  9. input标签的hidden属性,四大常用JSTL标签库

    input标签的hidden属性的应用及作用 定义:传输关于客户端/服务器交互的状态信息. Transmits state information about client/server intera ...

  10. 441 Arranging Coins 排列硬币

    你总共有 n 枚硬币,你需要将它们摆成一个阶梯形状,第 k 行就必须正好有 k 枚硬币.给定一个数字 n,找出可形成完整阶梯行的总行数.n 是一个非负整数,并且在32位有符号整型的范围内.示例 1:n ...