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_112233\d+', message='又错误了', code='c2'), 39 EmailValidator(message='又错误了', code='c3'), ]