zoukankan      html  css  js  c++  java
  • Python--day68--Django ORM常用字段、不常用的字段、自定义字段

    ORM和数据库的对应关系:

    Django ORM 常用字段和参数

    常用字段

    AutoField

    int自增列,必须填入参数 primary_key=True。当model中如果没有自增列,则自动会创建一个列名为id的列。

    IntegerField

    一个整数类型,范围在 -2147483648 to 2147483647。

    CharField

    字符类型,必须提供max_length参数, max_length表示字符长度。

    DateField

    日期字段,日期格式  YYYY-MM-DD,相当于Python中的datetime.date()实例。

    DateTimeField

    日期时间字段,格式 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ],相当于Python中的datetime.datetime()实例。

     

    Django ORM不常用字段:

    字段合集(争取记忆)

      1   AutoField(Field)
      2         - int自增列,必须填入参数 primary_key=True
      3 
      4     BigAutoField(AutoField)
      5         - bigint自增列,必须填入参数 primary_key=True
      6 
      7         注:当model中如果没有自增列,则自动会创建一个列名为id的列
      8         from django.db import models
      9 
     10         class UserInfo(models.Model):
     11             # 自动创建一个列名为id的且为自增的整数列
     12             username = models.CharField(max_length=32)
     13 
     14         class Group(models.Model):
     15             # 自定义自增列
     16             nid = models.AutoField(primary_key=True)
     17             name = models.CharField(max_length=32)
     18 
     19     SmallIntegerField(IntegerField):
     20         - 小整数 -32768 ~ 32767
     21 
     22     PositiveSmallIntegerField(PositiveIntegerRelDbTypeMixin, IntegerField)
     23         - 正小整数 0 ~ 32767
     24     IntegerField(Field)
     25         - 整数列(有符号的) -2147483648 ~ 2147483647
     26 
     27     PositiveIntegerField(PositiveIntegerRelDbTypeMixin, IntegerField)
     28         - 正整数 0 ~ 2147483647
     29 
     30     BigIntegerField(IntegerField):
     31         - 长整型(有符号的) -9223372036854775808 ~ 9223372036854775807
     32 
     33     BooleanField(Field)
     34         - 布尔值类型
     35 
     36     NullBooleanField(Field):
     37         - 可以为空的布尔值
     38 
     39     CharField(Field)
     40         - 字符类型
     41         - 必须提供max_length参数, max_length表示字符长度
     42 
     43     TextField(Field)
     44         - 文本类型
     45 
     46     EmailField(CharField):
     47         - 字符串类型,Django Admin以及ModelForm中提供验证机制
     48 
     49     IPAddressField(Field)
     50         - 字符串类型,Django Admin以及ModelForm中提供验证 IPV4 机制
     51 
     52     GenericIPAddressField(Field)
     53         - 字符串类型,Django Admin以及ModelForm中提供验证 Ipv4和Ipv6
     54         - 参数:
     55             protocol,用于指定Ipv4或Ipv6, 'both',"ipv4","ipv6"
     56             unpack_ipv4, 如果指定为True,则输入::ffff:192.0.2.1时候,可解析为192.0.2.1,开启此功能,需要protocol="both"
     57 
     58     URLField(CharField)
     59         - 字符串类型,Django Admin以及ModelForm中提供验证 URL
     60 
     61     SlugField(CharField)
     62         - 字符串类型,Django Admin以及ModelForm中提供验证支持 字母、数字、下划线、连接符(减号)
     63 
     64     CommaSeparatedIntegerField(CharField)
     65         - 字符串类型,格式必须为逗号分割的数字
     66 
     67     UUIDField(Field)
     68         - 字符串类型,Django Admin以及ModelForm中提供对UUID格式的验证
     69 
     70     FilePathField(Field)
     71         - 字符串,Django Admin以及ModelForm中提供读取文件夹下文件的功能
     72         - 参数:
     73                 path,                      文件夹路径
     74                 match=None,                正则匹配
     75                 recursive=False,           递归下面的文件夹
     76                 allow_files=True,          允许文件
     77                 allow_folders=False,       允许文件夹
     78 
     79     FileField(Field)
     80         - 字符串,路径保存在数据库,文件上传到指定目录
     81         - 参数:
     82             upload_to = ""      上传文件的保存路径
     83             storage = None      存储组件,默认django.core.files.storage.FileSystemStorage
     84 
     85     ImageField(FileField)
     86         - 字符串,路径保存在数据库,文件上传到指定目录
     87         - 参数:
     88             upload_to = ""      上传文件的保存路径
     89             storage = None      存储组件,默认django.core.files.storage.FileSystemStorage
     90             width_field=None,   上传图片的高度保存的数据库字段名(字符串)
     91             height_field=None   上传图片的宽度保存的数据库字段名(字符串)
     92 
     93     DateTimeField(DateField)
     94         - 日期+时间格式 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]
     95 
     96     DateField(DateTimeCheckMixin, Field)
     97         - 日期格式      YYYY-MM-DD
     98 
     99     TimeField(DateTimeCheckMixin, Field)
    100         - 时间格式      HH:MM[:ss[.uuuuuu]]
    101 
    102     DurationField(Field)
    103         - 长整数,时间间隔,数据库中按照bigint存储,ORM中获取的值为datetime.timedelta类型
    104 
    105     FloatField(Field)
    106         - 浮点型
    107 
    108     DecimalField(Field)
    109         - 10进制小数
    110         - 参数:
    111             max_digits,小数总长度
    112             decimal_places,小数位长度
    113 
    114     BinaryField(Field)
    115         - 二进制类型


    自定义字段(了解为主)

    class UnsignedIntegerField(models.IntegerField):
        def db_type(self, connection):
            return 'integer UNSIGNED'

    自定义char类型字段:

    复制代码
    class FixedCharField(models.Field):
        """
        自定义的char类型的字段类
        """
        def __init__(self, max_length, *args, **kwargs):
            super().__init__(max_length=max_length, *args, **kwargs)
            self.length = max_length
    
        def db_type(self, connection):
            """
            限定生成数据库表的字段类型为char,长度为length指定的值
            """
            return 'char(%s)' % self.length
    
    
    class Class(models.Model):
        id = models.AutoField(primary_key=True)
        title = models.CharField(max_length=25)
        # 使用上面自定义的char类型的字段
        cname = FixedCharField(max_length=25)
    复制代码

    创建的表结构:

     

  • 相关阅读:
    LDA模型了解及相关知识
    GAN
    tensorflow学习6
    GAN的文献综述
    python相关工具
    tensorflow学习5----变量管理
    tensorflow学习5----GAN模型初探
    8月14日至8月20日技术积累
    8月7日至8月13日技术积累
    8月1日到8月6日技术要点
  • 原文地址:https://www.cnblogs.com/xudj/p/10480301.html
Copyright © 2011-2022 走看看