Field
点击这里查看Github,记得关注哦!
数据操作字段与其参数
字段
所有字段类型:
-
AutoField(Field)
- int 自增列,必须填入参数 primary_key=True
-
BigAutoField(AutoField)
- bigint 自增列,必须填入参数 primary_key=True
注:当model中如果没有自增列,则自动会创建一个列名为 id 的列
from django.db import models class UserInfo(models.Model): # 自动创建一个列名为id的且为自增的整数列 username = models.CharField(max_length=32) class Group(models.Model): # 自定义自增列 nid = models.AutoField(primary_key=True) name = models.CharField(max_length=32)
-
SmallIntegerField(IntegerField):
- 小整数 -32768 ~ 32767
-
PositiveSmallIntegerField(PositiveIntegerRelDbTypeMixin, IntegerField)
- 正小整数 0 ~ 32767
-
IntegerField(Field)
- 整数列(有符号的) -2147483648 ~ 2147483647
-
PositiveIntegerField(PositiveIntegerRelDbTypeMixin, IntegerField)
- 正整数 0 ~ 2147483647
-
BigIntegerField(IntegerField):
- 长整型(有符号的) -9223372036854775808 ~ 9223372036854775807
-
BooleanField(Field)
- 布尔值类型
-
NullBooleanField(Field):
- 可以为空的布尔值
-
CharField(Field)
- 字符类型
- 必须提供 max_length 参数, max_length 表示字符长度
-
TextField(Field)
- 文本类型
-
EmailField(CharField):
- 字符串类型,Django Admin 以及 ModelForm 中提供验证机制
-
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:允许文件夹
-
FileField(Field)
- 字符串,路径保存在数据库,文件上传到指定目录
- 参数:
- upload_to = “”:上传文件的保存路径
- storage = None:存储组件,默认 django.core.files.storage.FileSystemStorage
-
ImageField(FileField)
- 字符串,路径保存在数据库,文件上传到指定目录
- 参数:
- upload_to = “”:上传文件的保存路径
- storage = None:存储组件,默认 django.core.files.storage.FileSystemStorage
- width_field=None:上传图片的高度保存的数据库字段名(字符串)
- height_field=None:上传图片的宽度保存的数据库字段名(字符串)
-
DateTimeField(DateField)
- 日期+时间格式:YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]
-
DateField(DateTimeCheckMixin, Field)
- 日期格式:YYYY-MM-DD
-
TimeField(DateTimeCheckMixin, Field)
- 时间格式:HH:MM[:ss[.uuuuuu]]
-
DurationField(Field)
- 长整数,时间间隔,数据库中按照 bigint 存储,ORM 中获取的值为 datetime.timedelta 类型
-
FloatField(Field)
- 浮点型
-
DecimalField(Field)
- 10进制小数
- 参数:
- max_digits:小数总长度
- decimal_places:小数位长度
-
BinaryField(Field)
- 二进制类型
注意: 这些操作,如果是直接用数据库操作语句进行添加的话,不会有报错或是警告之类的信息,但是如果换到后台管理页面上,进行添加则会有相应的警告!
字段参数
通用参数
- null=True:该字段可以为空
- default=‘1111’:默认值为1111
- db_index=True:模型字段设置索引
- unique=True:字段唯一
- max_length=xxx:表示字符长度
- primary_key= True:设置主键
class Meta: # 用于创建多列间的组合操作
unique_together = ( #创建有关联的联合唯一索引
('email','ctime'),
)
index_together = ( #创建普通的索引
('email','ctime'),
)
Django Admin 参数:
- verbose_name:Admin 中显示的字段名称
- blank:Admin 中是否允许用户输入为空
- editable:Admin 中是否可以编辑
- help_text:Admin 中该字段的提示信息
- choices:Admin 中显示选择框的内容,用不变动的数据放在内存中从而避免跨表操作,如:gf = models.IntegerField(choices=[(0, ‘小学’), (1, ‘中学’),], default=1)
- error_messages:自定义错误信息(字典类型),从而定制想要显示的错误信息;字典健:null, blank, invalid, invalid_choice, unique, and unique_for_date,如:{‘null’: “不能为空.”, ‘invalid’: ‘格式错误’}
- validators:自定义错误验证(列表类型),从而定制想要的验证规则
关联字段
- OneToOneField:一对一:
- class_obj = models.ForeignKey(verbose_name=“班级”, to=“ClassList”)
- ForeignKey:一对多:
- customer = models.OneToOneField(verbose_name=‘客户信息’, to=‘Customer’)
- ManyToManyField:多对多:
- teachers = models.ManyToManyField(verbose_name=‘任课老师’, to=‘UserInfo’, related_name=‘teach_classes’,limit_choices_to={“department_id__in”: [1003, 1004, 1005]})