常用字段
AutoField:
int 自增列,必须填入参数 primary_key=True
如果没有写 AutoField,则会自动创建一个列名为 id 的列
from django.db import models class Person(models.Model): id = models.AutoField(primary_key=True) # 自增的 id 主键
CharField:
字符类型,必须提供 max_length 参数, max_length 表示最大字符长度
from django.db import models class Person(models.Model): id = models.AutoField(primary_key=True) # 自增的 id 主键 name = models.CharField(max_length=32)
IntegerField:
整数类型,范围在 -2147483648 到 2147483647
from django.db import models class Person(models.Model): id = models.AutoField(primary_key=True) # 自增的 id 主键 name = models.CharField(max_length=32) age = models.IntegerField()
DateField:
日期字段,日期格式 YYYY-MM-DD,相当于 Python 中的 datetime.date()
from django.db import models class Person(models.Model): id = models.AutoField(primary_key=True) # 自增的 id 主键 name = models.CharField(max_length=32) age = models.IntegerField() birthday = models.DateField(auto_now_add=True)
DatetimeField、DateField、TimeField 这三个时间字段,都可设置 auto_now_add、auto_now 属性
auto_now_add=True 的话,创建数据记录的时候会把当前时间赋给该字段
auto_now=True 的话,每次更新数据记录的时间会用来更新该字段
DateTimeField:
日期时间字段,格式 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ],相当于 Python 中的 datetime.datetime()
执行命令:
manage.py@mysite2 > makemigrations app01 manage.py@mysite2 > migrate app01
去数据库中看一下
添加数据
只添加 name、age 字段
DateField 是添加这条数据的日期
不常用字段
BigAutoField(AutoField):
bigint 自增列,必须填入参数 primary_key=True
如果没有写自增列,则会自动创建一个列名为 id 的列
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):
可以为空的布尔值
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 格式的验证
TimeField(DateTimeCheckMixin, Field):
时间格式,HH:MM[:ss[.uuuuuu]]
DurationField(Field):
长整数,时间间隔,数据库中按照 bigint 存储,ORM 中获取的值为 datetime.timedelta 类型
FloatField(Field):
浮点型
DecimalField(Field):
10进制小数
参数:max_digits,小数总长度;decimal_places,小数位长度
BinaryField(Field):
二进制类型
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,上传图片的宽度保存的数据库字段名(字符串)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。
Django ORM 常用字段与不常用字段汇总
- Author -
Sch01aR#声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@