zoukankan      html  css  js  c++  java
  • python-django-Model(基本结构)

    django为使用一种新的方式,即:关系对象映射(Object Relational Mapping,简称ORM)。

    django中遵循 Code Frist 的原则,即:根据代码中定义的类来自动生成数据库表。

    基本字段:

     1 AutoFiled(Filed)   int自增列   必须填入参数 primary_key=True
     2  
     3  BigAutoField(AutoField)   bigint自增列   必须填入参数 primary_key=True
     4  
     5  当model中如果没有自增列,则自动会创建一个列名为id的列
     6  
     7  SmallIntegerField(IntegerField)   小整数  -32768~32767
     8 
     9  PositiveSmallIntegerField(PositiveIntegerRelDbTypeMixin,IntegerField)   正小整数  0~32767
    10 
    11  IntegerField(Field) 整数列(有符号的) -2147483648~2147483647
    12 
    13  PositiveIntegerField(PositiveIntegerRelDbTypeMixin,IntegerField)  正整数 0~2147483647
    14 
    15  BigIntegerField(IntegerField)长整形(有符号的)-922337036854775808~9223372036854775807
    16 
    17  BooleanField(Field)   布尔值类型
    18  
    19  NullBooleanField(Field)    可以为空的布尔值
    20 
    21  CharField(Field)   字符类型
    22 
    23  TextField(Field)   文本类型
    24 
    25  EmailField(CharField)  字符串类型  django admin 以及ModelForm中提供验证机制
    26 
    27  IPAddressField(Field)  字符串类型  django admin 以及ModelForm中提供验证IPV4机制
    28  
    29  GenericIPAddressField(Field)  字符串类型  django admin 以及ModelForm中提供验证IPV4和IPV6  参数:protocol,用于指定ipv4或ipv6:'both','ipv4','ipv6'
    30  
    31  URLField(CharField)  字符串类型  django admin 以及ModelForm中提供验证URL
    32 
    33  SlugField(CharField)  字符串类型  django admin 以及ModelForm中提供验证 支持字母数字下划线连接符(减号)
    34 
    35  'CommaSeparatedIntegerField': 'varchar(%(max_length)s)', 必须由逗号分开的整数,必须有max_length参数
    36 
    37  UUIDField(Field)   字符串类型,Django Admin以及ModelForm中提供对UUID格式的验证
    38 
    39  FilePathField(Field)  字符串,Django Admin以及ModelForm中提供读取文件夹下文件的功能 参数:
    40                 path,                      文件夹路径
    41                 match=None,                正则匹配
    42                 recursive=False,           递归下面的文件夹
    43                 allow_files=True,          允许文件
    44                 allow_folders=False,       允许文件夹
    45 
    46 FileField(Field)  字符串,路径保存在数据库,文件上传到指定目录
    47         - 参数:
    48             upload_to = ""      上传文件的保存路径
    49             storage = None      存储组件,默认django.core.files.storage.FileSystemStorage
    50 
    51 ImageField(FileField) 字符串,路径保存在数据库,文件上传到指定目录
    52         - 参数:
    53             upload_to = ""      上传文件的保存路径
    54             storage = None      存储组件,默认django.core.files.storage.FileSystemStorage
    55             width_field=None,   上传图片的高度保存的数据库字段名(字符串)
    56             height_field=None   上传图片的宽度保存的数据库字段名(字符串)
    57 
    58 DateTimeField(DateField)  日期+时间格式 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]
    59 
    60 DateField(DateTimeCheckMixin,Field)  日期格式      YYYY-MM-DD
    61 
    62 TimeField(DateTimeCheckMixin,Field)  时间格式      HH:MM[:ss[.uuuuuu]]    
    63 
    64 
    65 FloatField(Field)   浮点型
    66 DecimalField(Field)  10进制小数 
    67             参数:
    68             max_digits,小数总长度
    69             decimal_places,小数位长度    
    70 
    71  'BinaryField': 'longblob',存储二进制数据,不能使用filter函数获得QuerySet

    返回值为字段在数据库中的属性,Django字段默认的值为:

     1 'AutoField': 'integer AUTO_INCREMENT',
     2             'BigAutoField': 'bigint AUTO_INCREMENT',
     3             'BinaryField': 'longblob',
     4             'BooleanField': 'bool',
     5             'CharField': 'varchar(%(max_length)s)',
     6             'CommaSeparatedIntegerField': 'varchar(%(max_length)s)',
     7             'DateField': 'date',
     8             'DateTimeField': 'datetime',
     9             'DecimalField': 'numeric(%(max_digits)s, %(decimal_places)s)',
    10             'DurationField': 'bigint',
    11             'FileField': 'varchar(%(max_length)s)',
    12             'FilePathField': 'varchar(%(max_length)s)',
    13             'FloatField': 'double precision',
    14             'IntegerField': 'integer',
    15             'BigIntegerField': 'bigint',
    16             'IPAddressField': 'char(15)',
    17             'GenericIPAddressField': 'char(39)',
    18             'NullBooleanField': 'bool',
    19             'OneToOneField': 'integer',
    20             'PositiveIntegerField': 'integer UNSIGNED',
    21             'PositiveSmallIntegerField': 'smallint UNSIGNED',
    22             'SlugField': 'varchar(%(max_length)s)',
    23             'SmallIntegerField': 'smallint',
    24             'TextField': 'longtext',
    25             'TimeField': 'time',
    26             'UUIDField': 'char(32)',

    字段参数:

     1  null                数据库中字段是否可以为空
     2     db_column           数据库中字段的列名
     3     db_tablespace
     4     default             数据库中字段的默认值
     5     primary_key         数据库中字段是否为主键
     6     db_index            数据库中字段是否可以建立索引
     7     unique              数据库中字段是否可以建立唯一索引
     8     unique_for_date     数据库中字段【日期】部分是否可以建立唯一索引
     9     unique_for_month    数据库中字段【月】部分是否可以建立唯一索引
    10     unique_for_year     数据库中字段【年】部分是否可以建立唯一索引
    11 
    12     django admin
    13         verbose_name        Admin中显示的字段名称
    14         blank               Admin中是否允许用户输入为空
    15         editable            Admin中是否可以编辑
    16         help_text           Admin中该字段的提示信息
    17         choices             Admin中显示选择框的内容,用不变动的数据放在内存中从而避免跨表操作
    18                             如:gf = models.IntegerField(choices=[(0, '哈哈'),(1, '啦啦啦'),],default=1)
    19     django
    20         error_messages      自定义错误信息(字典类型),从而定制想要显示的错误信息;
    21                             字典健:null, blank, invalid, invalid_choice, unique, and unique_for_date
    22                             如:{'null': "不能为空.", 'invalid': '格式错误'}
    23 
    24         validators          自定义错误验证(列表类型),从而定制想要的验证规则
    25                             from django.core.validators import RegexValidator
    26                             from django.core.validators import EmailValidator,URLValidator,DecimalValidator,
    27                             MaxLengthValidator,MinLengthValidator,MaxValueValidator,MinValueValidator
    28                             如:
    29                                 test = models.CharField(
    30                                     max_length=32,
    31                                     error_messages={
    32                                         'c1': '优先错信息1',
    33                                         'c2': '优先错信息2',
    34                                         'c3': '优先错信息3',
    35                                     },
    36                                     validators=[
    37                                         RegexValidator(regex='root_d+', message='错误了', code='c1'),
    38                                         RegexValidator(regex='root_112233d+', message='又错误了', code='c2'),
    39                                         EmailValidator(message='又错误了', code='c3'), ]
  • 相关阅读:
    Miox带你走进动态路由的世界——51信用卡前端团队
    从零开始搭建Vue组件库 VV-UI
    你不知的DOM编程
    浅谈前后端分离与实践(一)
    处理 Vue 单页面应用 SEO 的另一种思路
    Vue服务端渲染和Vue浏览器端渲染的性能对比
    实例PK(Vue服务端渲染 VS Vue浏览器端渲染)
    使用ES6+Vue+webpack+gulp构建新一代Web应用
    耐克的定制页用canvas如何实现....跪求前端大神指点。
    Unity热更新学习(二) —— ToLua c#与lua的相互调用
  • 原文地址:https://www.cnblogs.com/GodLv/p/9592284.html
Copyright © 2011-2022 走看看