当前位置: 芃睿知识网 > 建站问题

Django models 数据库数据类型有哪些

知识网2021年10月23日 23:45原创

CharField

class CharField(max_length=None[, **options])

# 字符串(存储从小到大各种长度)

# 如果是巨大的文本类型,可以用 TextField,该字段默认的表单样式是 TextInput,CharField 必须接收一个额外的参数: max_length,在数据库层和 Django 表单验证中起作用, 用来限定字段的长度。

IntegerField

class IntegerField([**options])

# 整数(-2147483648 到 2147483648)

# 默认的表单输入工具是TextInput

FloatField

class FloatField([**options])

# 浮点数

# max_digits 总位数(不包括小数点和符号)

# decimal_places 小数位数

# 举例, 要保存最大值为 999 (小数点后保存2位),你要这样定义字段:

# models.FloatField(..., max_digits=5, decimal_places=2)

AutoField

class AutoField(**options)

# 根据实际 ID 自动增长的 IntegerField

# 添加记录时它会自动增长,你通常不需要直接使用这个字段

# 自定义一个主键:my_id=models.AutoField(primary_key=True),如果你不指定主键的话,系统会自动添加一个主键字段到你的 model。

BooleanField

class BooleanField(**options)

# true/false

# 此字段的默认表单挂件是一个 CheckboxInput,如果你需要设置 null 值,则使用 NullBooleanField 来代替 BooleanField。如果Field.default没有指定的话, BooleanField 的默认值是 None。

TextField

class TextField([**options])

# 大文本字段

# 该模型默认的表单组件是 Textarea

EmailField

class EmailField([max_length=254, **options])

# 带有检查 Email 合法性的 CharField

# 它使用 EmailValidator 来验证输入合法性

DateField

class DateField([auto_now=False, auto_now_add=False, **options])

# 日期字段

# Argument 描述

# auto_now 当对象被保存时,自动将该字段的值设置为当前时间,通常用于表示 &last-modified& 时间戳。

# auto_now_add 当对象首次被创建时,自动将该字段的值设置为当前时间,通常用于表示对象创建时间。

DateTimeField

class DateTimeField([auto_now=False, auto_now_add=False, **options])

# 日期时间字段

# 类似 DateField 支持同样的附加选项

ImageField

class ImageField([upload_to=None, height_field=None, width_field=None, max_length=100, **options])

# 类似 FileField, 不过要校验上传对象是否是一个合法图片

# 它有两个可选参数:height_field 和 width_field,如果提供这两个参数,则图片将按提供的高度和宽度规格保存 。

FileField

class FileField([upload_to=None, max_length=100, **options])

# 上传文件的字段

# 字段不支持 primary_key 和 unique 参数,如果使用会生成 TypeError 错误,在旧版本 Django 中,upload_to 属性是必须的。

URLField

class URLField([max_length=200, **options])

# CharField 类型的 URL

# 若 verify_exists 参数为 True (默认), 给定的 URL 会预先检查是否存在( 即URL是否被有效装入且没有返回404响应)。

SlugField

class SlugField([max_length=50, **options])

# 短标题

# 一个 slug 只能包含字母、数字、下划线或者是连字符,通常用来作为短标签,通常它们是用来放在URL里的。与 CharField 类似, 你可以指定max_length 的值,如果没有指定 max_length, Django 将会默认长度为 50。

FilePathField

class FilePathField(path=None[, match=None, recursive=False, max_length=100, **options])

# 一个 CharField ,内容只限于文件系统内特定目录下的文件名

# 参数, 其中第一个是必需的:

# path 必填。这个 FilePathField 应该得到其选择的目录的绝对文件系统路径。例如: &/home/images&

# match 可选,match 只匹配基本文件名(base filename), 而不是整个文件路径(full path)

# recursive 可选,True/False,默认 False

# allow_files 可选,True/False,默认 False

# allow_folders 可选,True/False,默认 False

GenericIPAddressField

class GenericIPAddressField([protocol=both, unpack_ipv4=False, **options])

# IPv4 或 IPv6 地址, 字符串格式 (例如 192.0.2.30 或 2a02:42fe::4)

# 默认表单小部件是一个 TextInput

CommaSeparatedIntegerField

class CommaSeparatedIntegerField(max_length=None[, **options])

# 逗号分隔的整数字段

# 像 CharField 一样,需要一个 max_length 参数,同时数据库移植时也需要注意

BigIntegerField

class BigIntegerField([**options])

# 64 位整数

# 类似于一个 IntegerField,它的值的范围是 -9223372036854775808 到9223372036854775807 之间, 这个字段默认的表单组件是一个 TextInput

BinaryField

class BinaryField([**options])

# 存储原始二进制码

# 只支持 bytes 赋值,注意这个 Field 只有很有限的功能

PositiveIntegerField

class PositiveIntegerField([**options])

# 类似 IntegerField, 但值必须是正数或者零(0)

UUIDField

class UUIDField([**options])

# 存储 UUID

# 使用 Python 的 UUID 类。当使用 PostgreSQL 数据库时,该字段类型对应的数据库中的数据类型是 uuid,使用其他数据库时,数据库对应的是char(32) 类型。使用 UUID 类型相对于使用具有 primary_key 参数的AutoField 类型是一个更好的解决方案。 数据库不会自动生成 UUID,所以推荐使用 default 参数:

import uuid

from django.db import models

class MyUUIDModel(models.Model):

id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)

本文章网址:https://www.shsongjiang.com/p26/

很赞哦!(14)

发表高见 (请对您的言行负责)
2021年11月06日 01:45,回答 by_淘气宝宝:
django模型跟表单的type一一对应,很有意思
2021年11月06日 01:16,回答 by_淘气宝宝:
收藏了,这么多模型属性确实记不住

©芃睿知识网 版权所有 2012-2022 www.shsongjiang.com

备案号:赣ICP备2022001527号-1