【Django 2021年最新版教程15】数据库定义 models字段类型 限制 用法 总结
一、类型
1. id自增
django 在每一次save()操作后都可以正常的增加一条数据并且id顺序自增。id无需在save中创建,数据表自动添加
id = models.AutoField(primary_key=True)
2. 字符串
username = models.CharField(max_length=50)
3. 数字
level = models.IntegerField(default=1) # 用户等级,默认1
4. 日期时间
createTime = models.DateTimeField(null=True)
如:2021-06-01 00:00:00.000000
5. 日期
createDate = models.DateField(auto_now_add=True)
如:2021-06-01
使用Python的datetime.date实例保存的日期,记录年月日,在映射数据库中也是date类型,使用这个字段类型可以传递以下几个参数:
auto_now = True: 每次保存对象时,自动设置该字段为当前时间(可用于修改字段);
auto_now_add = True: 对象第一次被创建时自动设置当前的时间。需要注意的是:自动保存的时间的时区使用的是默认时区(可用于创建字段)。
6.外键
# Activity也是一个数据库表的名字
activity = models.ForeignKey(Activity)
7. 文本
TextField
存储大字符串(大于254个字符的),映射到数据库为:longtext类型。
二、参数限制
1.主键
primary_key=True
如:
id = models.AutoField(primary_key=True)
2. 长度
max_length=50
如
username = models.CharField(max_length=50)
3. 默认值
default=1
如
level = models.IntegerField(default=1) # 用户等级,默认1
4. 允许为空
null=True
如
createTime = models.DateTimeField(null=True)
注:不设置则表示必填
5. 数据库索引
db_index=True
如
book_start = models.DateTimeField(db_index=True)
6. 唯一
unique = True - 不允许重复,如:用户密码等等。
三、用法
1. 一个字段定义多个限制
key = models.CharField(max_length=64, db_index=True)
2. 枚举类型
class Activity(models.Model):status = models.IntegerField()STATUS_DELETED = -1STATUS_SAVED = 0STATUS_PUBLISHED = 1class Meta:db_table = 'Activity'
四、完整实例
from django.db import models# 系统配置表
class SystemConfiguration(models.Model):id = models.AutoField(primary_key=True) # django 在每一次save()操作后都可以正常的增加一条数据并且id顺序自增。id无需在save中创建,数据表自动添加configuration_name = models.CharField(max_length=50)configuration_value = models.CharField(max_length=50)class Meta:db_table = 'SystemConfiguration'# 可预约日期表
class EveryDayBookingInfo(models.Model):id = models.AutoField(primary_key=True) # django 在每一次save()操作后都可以正常的增加一条数据并且id顺序自增。id无需在save中创建,数据表自动添加datetime_start = models.DateTimeField()datetime_end = models.DateTimeField()maximum_number = models.IntegerField(default=0)remain_number = models.IntegerField(default=0)class Meta:db_table = 'EveryDayBookingInfo'# 用户表
class User(models.Model):id = models.AutoField(primary_key=True) # django 在每一次save()操作后都可以正常的增加一条数据并且id顺序自增。id无需在save中创建,数据表自动添加username = models.CharField(max_length=50)id_card = models.CharField(max_length=50)identity_authentication_type = models.IntegerField(default=0)wechat_open_id = models.CharField(max_length=200, null=True)phone = models.CharField(max_length=20, null=True)password = models.CharField(max_length=100, null=True)user_role = models.IntegerField(default=1)createTime = models.DateTimeField()NO_AUTHENTICATION = 0FACE_AUTHENTICATION = 1PAYMENT_AUTHENTICATION = 2ORDINARY_USER = 1TICKET_INSPECTOR = 2SYSTEM_ADMINISTRATOR = 3class Meta:db_table = 'User'# 预约记录表
class BookingRecord(models.Model):id = models.AutoField(primary_key=True) # django 在每一次save()操作后都可以正常的增加一条数据并且id顺序自增。id无需在save中创建,数据表自动添加user_id = models.IntegerField()username = models.CharField(max_length=50)datetime_id = models.IntegerField()datetime_start = models.DateTimeField()datetime_end = models.DateTimeField()submit_datetime = models.DateTimeField()is_main_order = models.IntegerField(default=1)main_order_id = models.IntegerField(default=0)status = models.IntegerField(default=1)processed_datetime = models.DateTimeField(null=True)MAIN_ORDER = 1SIDE_ORDER = 0STATUS_CANCELLED = 0STATUS_VALID = 1STATUS_CHECKED = 2class Meta:db_table = 'BookingRecord'
参考
https://blog.csdn.net/qq_42778001/article/details/110883906
【Django 2021年最新版教程15】数据库定义 models字段类型 限制 用法 总结相关推荐
- php 查询datetime,急急PHP,数据库中createtime字段类型为datetime,怎样根据这个查询一段时间内的数据...
数据库中createtime字段类型为datetime,是年月日时分秒,怎样把他转换成时间戳?数据很多,一条好转换,可是那么多怎么办? 回复讨论(解决方案) select unix_timestamp ...
- oracle 数据库表的字段类型修改为clob类型报错及解决方法
数据库表修改字段类型为clob会报错invalid alteration of datatype.不允许修改.可以先建个clob类型的新字段,然后把要改字段类型数据备份到新的字段中,然后删除掉旧的字段 ...
- mysql数据库中常用的类型_MySQL数据库中常用字段类型
MySQL数据库中常用字段类型 整数型:TINYINT,SMALLINT,INT,BIGINT 小数型:FLOAT,DOUBLE,DECIMAL(M,D) 字符型:CHAR,VARCHAR 日期型:D ...
- 数据库表(字段类型、约束、截断表、修改表字段、重命名表)
字段类型: 在这里只列举一些常用的字段类型: 整数类型:int(Integer):普通大小的整数 小数类型: float(m,d):单精度浮点数,m表示数字长度,d表示小数位数,例如float(5,2 ...
- 【视频教程】帝国CMS制作网站系列教程15—数据表、字段及系统模型创建
作为一个程序员,搭建一个自己的博客网站是件非常容易的事情,但是作为很多非程序员非计算机专业的学习者来讲,可能就需要花点时间进行学习,而如果你想通过自学来学习怎么制作一个属于自己的网站的话,那这套帝国C ...
- Django:模型层ORM,创建模型类,字段类型
官方文档:https://docs.djangoproject.com/zh-hans/3.2/ref/models/fields/ # models.py from django.db import ...
- 数据库设计之字段类型
1.一般的一个数据库中字段的类型有text,int,tinyint,datetime,vachar,char这几个 2.它们的长度一般设置为: 类型 长度 小数点 text--&g ...
- mysql char 和varchar哪种效率高_MySQL数据库中的字段类型varchar和char的主要区别是什么?那种字段的查找效率要高,为什么?...
解析: 'ucfirst', explode('-', strtolower($request->action)) ))); ---------------------------------- ...
- oracle+资料类型不一致吗,oracle数据库中,字段类型不一致,导致查询慢
最近一个WEBSERVICE突然变慢了,后查询发现,后台查询也非常慢(记录条数800多万),索引也有,如下语句 SELECT P.ID,P.RECORD_ID,P.KEY_NAME,P.KEY_CON ...
- decimal在java中用什么类型,MYSQL数据库 的 decimal 字段类型 和 Java 的BigDecimal
mysql中的decimal , 在java中的用BigDecimal表示的. decimalBigDecimalBigDecimal的四则运算BigDecimal a = new BigDecima ...
最新文章
- 使用代理软件之后其他软件不能联网的解决方法
- 卧槽!看不懂这些动图,你不配做个程序员
- weblogic从入门到起飞(nodemanager)(五)
- zookeeper的安装及配置教程(步骤详尽)
- 蓝桥杯校内模拟值序列
- Flutter之点击按钮打开百度链接
- 将jOOQ与Spring结合使用:代码生成
- 10.tesseract
- checkbox 在jsp中的使用
- (转载)MySQL基础(非常全)
- 需要在计算机安装msxml版本,win7 Office2010提示安装MSXML版本6.10.1129.0怎么办
- c语言搭积木游戏,我们一起搭积木,做游戏,就这就简单
- cv2批量修改图片大小
- Java实现角度转换器
- spring boot火车票售卖系统毕业设计代码211004
- c盘users在哪(c盘users在哪)
- 小木虫论坛-学术科研互动平台 爬虫
- ASP.NET访问Excel 失败的解决方法(错误号:80070005,8000401a)
- 【BLE】CC2541之OAD
- teamviewer linux远程开机,Ubuntu远程管理(teamviewer)
热门文章
- JSP连接SQLServer数据库特别要注意一个小问题得到解决
- Think in Java读书笔记--对象入门
- [18/12/3]蓝桥杯 练习系统 入门级别 Fibonacci数列求模问题 题解思路
- 1.1浅谈Spring(一个叫春的框架)
- 如何理解base href=%=basePath%
- vue实现侧边栏手风琴效果
- python:关于三级菜单的新手实现
- c#引用参数ref与输出参数out
- 算法导论8-5习题解答(平均排序)
- Windows Server 2008 R2 小技巧