zoukankan      html  css  js  c++  java
  • django ORM字段

    ORM 字段

    # 常用字段
    AutoField(Field)
        - int自增列,必须填入参数 primary_key=True
    # 注:当model中如果没有自增列,则自动会创建一个列名为id的列
    
    CharField(Field)
        - 字符类型
        - 必须提供max_length参数, max_length表示字符长度
    
    IntegerField(Field)
        - 整数列(有符号的) -2147483648 ~ 2147483647
    
    DecimalField(Field)
        - 10进制小数
        - 参数:
            max_digits,小数总长度
            decimal_places,小数位长度
    
    EmailField(CharField):
        - 字符串类型,Django Admin以及ModelForm中提供验证机制
    
    DateTimeField(DateField)
        - 日期+时间格式 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]
    
    DateField(DateTimeCheckMixin, Field)
        - 日期格式      YYYY-MM-DD
    
    TextField(Field)
        - 文本类型
    
    BooleanField(Field)
        - 布尔值类型
    
    FileField(Field)
        - 字符串,路径保存在数据库,文件上传到指定目录
        - 参数:
            upload_to = ""      上传文件的保存路径
            storage = None      存储组件,默认django.core.files.storage.FileSystemStorage
    
    
    # 了解字段
    BigAutoField(AutoField)
        - bigint自增列,必须填入参数 primary_key=True
    
    SmallIntegerField(IntegerField):
        - 小整数 -32768 ~ 32767
    
    PositiveSmallIntegerField(PositiveIntegerRelDbTypeMixin, IntegerField)
        - 正小整数 0 ~ 32767
    
    PositiveIntegerField(PositiveIntegerRelDbTypeMixin, IntegerField)
        - 正整数 0 ~ 2147483647
    
    BigIntegerField(IntegerField):
        - 长整型(有符号的) -9223372036854775808 ~ 9223372036854775807
    
    
    NullBooleanField(Field):
        - 可以为空的布尔值
    
    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,       允许文件夹
    
    
    ImageField(FileField)
        - 字符串,路径保存在数据库,文件上传到指定目录
        - 参数:
            upload_to = ""      上传文件的保存路径
            storage = None      存储组件,默认django.core.files.storage.FileSystemStorage
            width_field=None,   上传图片的高度保存的数据库字段名(字符串)
            height_field=None   上传图片的宽度保存的数据库字段名(字符串)
    
    
    
    TimeField(DateTimeCheckMixin, Field)
        - 时间格式      HH:MM[:ss[.uuuuuu]]
    
    DurationField(Field)
        - 长整数,时间间隔,数据库中按照bigint存储,ORM中获取的值为datetime.timedelta类型
    
    FloatField(Field)
        - 浮点型
    
    
    BinaryField(Field)
        - 二进制类型
    
    

    字段对应关系

    对应关系:
        '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
    用于表示某个字段可以为空。
    
    ## unique
    如果设置为unique=True 则该字段在此表中必须是唯一的 。
    
    ## db_index
    如果db_index=True 则代表着为此字段设置索引。
    
    ## default
    为该字段设置默认值。
    

    DateField和DateTimeField

    auto_now_add
    配置auto_now_add=True,创建数据记录的时候会把当前时间添加到数据库,之后不人为修改将一直不变。
    
    auto_now
    配置上auto_now=True,每次更新数据记录的时候会更新该字段。
    

    关系字段

    ForeignKey

    # 字段参数
    
    to
    设置要关联的表
    
    to_field
    设置要关联的表的字段  默认不写关联的就是另外一张的主键字段
    
    on_delete
    当删除关联表中的数据时,当前表与其关联的行的行为。
        - models.CASCADE 删除关联数据,与之关联也删除
    
    db_constraint
    是否在数据库中创建外键约束,默认为True。
    

    OneToOneField

    # 字段参数
    to
    设置要关联的表。
    
    to_field
    设置要关联的字段。
    
    on_delete
    当删除关联表中的数据时,当前表与其关联的行的行为。(参考上面的例子)
    

    django自定义字段

    # models.py
    class MyCharField(models.Field):
        def __init__(self,max_length,*args,**kwargs):
            self.max_length = max_length
            # 调用父类的init方法
            super().__init__(max_length=max_length,*args,**kwargs)  # 一定要是关键字的形式传入
    
        def db_type(self, connection):
            """
            返回真正的数据类型及各种约束条件
            :param connection:
            :return:
            """
            return 'char(%s)'%self.max_length
    
    # 自定义字段使用
    myfield = MyCharField(max_length=16,null=True)
    
  • 相关阅读:
    如何在Ubuntu Server 18.04上安装Microsoft的Procmon
    如何在Ubuntu 20.04上安装Wine 5.0
    如何在Kali Linux 2020中启用SSH服务
    如何在Ubuntu 20.04 LTS Focal Fossa上安装Apache Groovy
    如何使用命令在Ubuntu 20.04 Linux上安装Vmware Tools
    在Ubuntu 20.04 LTS Focal Fossa上安装Zabbix Agent
    hdu 2089 不要62
    hdu 2093 成绩排名
    hdu 2104 hide handkerchief
    leetcode147对链表进行插入排序
  • 原文地址:https://www.cnblogs.com/chenwenyin/p/12990842.html
Copyright © 2011-2022 走看看