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'), ]
原文地址:https://www.cnblogs.com/GodLv/p/9592284.html