zoukankan      html  css  js  c++  java
  • Django models 常用数据类型


    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)
    
    


    参考文章:
    1. https://www.cnblogs.com/laoguiaabb/p/8182906.html
    2. https://my.oschina.net/liuyuantao/blog/751343
  • 相关阅读:
    Java实现 LeetCode 402 移掉K位数字
    Java实现 LeetCode 402 移掉K位数字
    Java实现 LeetCode 401 二进制手表
    Java实现 LeetCode 401 二进制手表
    wpa_supplicant使用笔记-wpa_cli iwconfig
    Linux下的定时器:alarm()与setitimer()
    在 Windows 下远程桌面连接 Linux
    assert()函数用法总结
    linux下svn修改用户名和密码
    VirtualBox
  • 原文地址:https://www.cnblogs.com/yjq520/p/9003996.html
Copyright © 2011-2022 走看看