Django模型models字段超详解
前⾔
这⼏年⼀直在it⾏业⾥摸爬滚打,⼀路⾛来,不少总结了⼀些python⾏业⾥的⾼频⾯试,看到⼤部分初⼊⾏的新鲜⾎液,还在为各样的⾯试题答案或收录有各种困难问题
于是乎,我⾃⼰开发了⼀款⾯试宝典,希望能帮到⼤家,也希望有更多的Python新⼈真正加⼊从事到这个⾏业⾥,让python⽕不只是停留在⼴告上。
⼩程序搜索:Python⾯试宝典
或可关注原创个⼈博客:
也可关注,不定时发送各类有趣猎奇的技术⽂章:Python编程学习
模型层
链接Mysql数据库
在确保mysql数据库可以连接使⽤的情况下;⾸先在数据库中创建专为django使⽤的库django_data
create database django_data;
配置django的settings.py⽂件中的DATABASES属性如下
DATABASES ={
'default':{
'ENGINE':'django.sql',# 数据库引擎
'NAME':"django_data",# 使⽤的库名
"USER":"root",# ⽤户名
"PASSWORD":"123456",# 数据库密码
"HOST":"localhost",# 数据库主机地址
"PORT":"3306"
}
}
由于使⽤django的Python版本为3+;此时对于mysql的⽀持已经变为pymysql,⽽对于django加载数据库引擎时还需要使⽤2版本
的mysqldb名称
现在先需要我们安装pymysql之后在项⽬中重申mysql引擎
1. ⾸先安装pymysql
pip install pymysql -i pypi.tuna.tsinghua.edu/simple
2. 项⽬主⽬录下的__init__⽂件中添加如下内容
import pymysql
pymysql.install_as_MySQLdb()
3. 现在整个项⽬的数据库使⽤已经切换到了mysql
模型层字段
在模型层类中的字段即是数据库中表的字段,表的字段设计⾮常重要
每⼀个字段都是Field基类的⼀个实例(Field类⽤来建⽴字段与数据库之间的映射)
模型字段定义不能以下划线结尾
django会根据在模型类中定义的字段属性来确定以下⼏点⼯作
数据库中使⽤的数据类型
模型类对应的表单类渲染时使⽤的表单类型及HTML部件
必填字段等最低限度的验证要求检查,包括admin界⾯下⾃动⽣成的表单
BooleanField
True/False字段,默认值为None
BooleanField(**options)
表单类型:CheckboxInput,<input type='checkbox' ...>
CharField
字符串字段
CharField(max_length=None)
# max_length设置最⼤的字符数长度限制
表单类型:TextInput,<input type="text" ...>
DateField
以 datetime.date实例表⽰的⽇期
DateField(auto_now=False, auto_now_add=False,**options)
'''
auto_now: 该值为True时,每次在保存数据对象时,⾃动设置该字段为当前时间,也可以理解为⾃动更新最后⼀次修改时间react面试题ref概念
auto_now_add: 该值为True时,该字段设置在第⼀次数据对象创建时,可以记录当前字段创建的时间值
'''
注意:避免⽭盾,auto_now,auto_now_add,default不能同时出现,⼀个字段属性只能有其中⼀条设置,当设置了auto_now,或auto_now_add时,也会让该字段默认具有blank=True(字段可以为空)属性
表单类型:TextInput,<input type="text" ...>
DatetimeField
以datetime.datetime实例表⽰的⽇期和时间
DatetimeField(auto_now=False, auto_now_add=False,**options)
# 和DateField具有相同的字段属性
DecimalField
以Decimal实例表⽰的⼗进制浮点数类型
DecimalField(max_digits=None,decimal_places=None,**options)
'''
max_digits: 位数总数,包括⼩数点后的位数,必须⼤于decimal_places参数decimal_places: ⼩数点后的数字数量,精度
'''
表单类型:TextInput,<input type="text" ...>
EmailField
网站建设企业咨询CharField⼦类,表⽰Email字段,并会检查是否为合法邮箱地址EmailField(max_length=254,**option)
'''
max_length: 表⽰邮箱地址长度,默认为254
'''
表单类型:TextInput,<input type="text" ...>
FloatField
使⽤float实例来表⽰的浮点数
FloatField(**options)
位运算符c语言表单类型:TextInput,<input type="text" ...> IntegerField
⼀个整数,范围由-2147483648到2147483647
IntegerField(**options)
GenericIPAddressField
⼀个IPV4或IPV6地址的字符串
GenericIPAddressField(protocol=both, unpack_ipv4=False,**options)
'''
protocol: IP协议,ipv4或ipv6,默认both为全选
unpack_ipv4: 解析IP地址,只有当协议为both时才可以使⽤
socket结构体数组怎么接收'''
表单类型:TextInput,<input type="text"...>
SlugField
只包含字母、数字、下划线的字符串,常⽤来表⽰连接中的path部分或者⼀些其他短标题类型数据SlugField(max_length=50,**option)
TextField
⼤⽂本字段
TextField(**options)
表单类型:Textarea,<textarea>...</textarea>
URLField
CharField的⼦类,存储URL的字段
mysql面试题详解>哈夫曼树怎么画规范URLField(max_length=200,**options)
表单类型:TextInput,<input type="text"...>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。