上一篇:Django之Model操作之select_related和prefetch_related【ORM篇八】点击跳转
目录篇:Django之model操作ORM目录篇 点击跳转
下一篇:Django之Model的表类和字段对象的一些常用操作【ORM篇十】 点击跳转
目录
- 已建立完毕的类表
- 一.字段
- 字段类型
- 自定义无符号整数字段类型
- 返回值为字段在数据库中的属性,Django字段默认的值为:
- 注意事项
- 二.字段参数
- 三.元信息
- 四.多对多关系以及参数
- ForeignKey(ForeignObject) # 外键关联
- OneToOneField(ForeignKey) #一对一
- ManyToManyField(RelatedField) #多对多
- 五.ORM操作
- 基本操作
- 进阶操作
- 高级操作
- 其他操作
- 六. 其他
- Django原生SQL获取cursor字典
- 数字自增、字符串更新
- ORM函数相关
- ORM自定义函数
已建立完毕的类表
跳转:实战之Django之Model建表流程 https://blog.csdn.net/Burgess_zheng/article/details/86564984
示例:
一.字段
字段类型
mysql基本的类型:
字符串、数字、时间、二进制
django提供和很多数据类型:
如CharField字符串、EmailField邮箱、UrlField路径等等
其实都是字符串,自己写的无所谓,(django提供很多类型是因为django的admin用的
这些EmailField本质都是字符串,只不过在做django的admin的时候,起到了一些提示,如邮箱格式错误,长度不符合等等
django数据类型只需要:字符串、数字、时间、二进制类型,自增,就够了
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)
#二进制类型
自定义无符号整数字段类型
class UnsignedIntegerField(models.IntegerField):
def db_type(self, connection):
return 'integer UNSIGNED'