一、类型

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字段类型 限制 用法 总结相关推荐

  1. php 查询datetime,急急PHP,数据库中createtime字段类型为datetime,怎样根据这个查询一段时间内的数据...

    数据库中createtime字段类型为datetime,是年月日时分秒,怎样把他转换成时间戳?数据很多,一条好转换,可是那么多怎么办? 回复讨论(解决方案) select unix_timestamp ...

  2. oracle 数据库表的字段类型修改为clob类型报错及解决方法

    数据库表修改字段类型为clob会报错invalid alteration of datatype.不允许修改.可以先建个clob类型的新字段,然后把要改字段类型数据备份到新的字段中,然后删除掉旧的字段 ...

  3. mysql数据库中常用的类型_MySQL数据库中常用字段类型

    MySQL数据库中常用字段类型 整数型:TINYINT,SMALLINT,INT,BIGINT 小数型:FLOAT,DOUBLE,DECIMAL(M,D) 字符型:CHAR,VARCHAR 日期型:D ...

  4. 数据库表(字段类型、约束、截断表、修改表字段、重命名表)

    字段类型: 在这里只列举一些常用的字段类型: 整数类型:int(Integer):普通大小的整数 小数类型: float(m,d):单精度浮点数,m表示数字长度,d表示小数位数,例如float(5,2 ...

  5. 【视频教程】帝国CMS制作网站系列教程15—数据表、字段及系统模型创建

    作为一个程序员,搭建一个自己的博客网站是件非常容易的事情,但是作为很多非程序员非计算机专业的学习者来讲,可能就需要花点时间进行学习,而如果你想通过自学来学习怎么制作一个属于自己的网站的话,那这套帝国C ...

  6. Django:模型层ORM,创建模型类,字段类型

    官方文档:https://docs.djangoproject.com/zh-hans/3.2/ref/models/fields/ # models.py from django.db import ...

  7. 数据库设计之字段类型

    1.一般的一个数据库中字段的类型有text,int,tinyint,datetime,vachar,char这几个 2.它们的长度一般设置为: 类型       长度     小数点 text--&g ...

  8. mysql char 和varchar哪种效率高_MySQL数据库中的字段类型varchar和char的主要区别是什么?那种字段的查找效率要高,为什么?...

    解析: 'ucfirst', explode('-', strtolower($request->action)) ))); ---------------------------------- ...

  9. oracle+资料类型不一致吗,oracle数据库中,字段类型不一致,导致查询慢

    最近一个WEBSERVICE突然变慢了,后查询发现,后台查询也非常慢(记录条数800多万),索引也有,如下语句 SELECT P.ID,P.RECORD_ID,P.KEY_NAME,P.KEY_CON ...

  10. decimal在java中用什么类型,MYSQL数据库 的 decimal 字段类型 和 Java 的BigDecimal

    mysql中的decimal , 在java中的用BigDecimal表示的. decimalBigDecimalBigDecimal的四则运算BigDecimal a = new BigDecima ...

最新文章

  1. 使用代理软件之后其他软件不能联网的解决方法
  2. 卧槽!看不懂这些动图,你不配做个程序员
  3. weblogic从入门到起飞(nodemanager)(五)
  4. zookeeper的安装及配置教程(步骤详尽)
  5. 蓝桥杯校内模拟值序列
  6. Flutter之点击按钮打开百度链接
  7. 将jOOQ与Spring结合使用:代码生成
  8. 10.tesseract
  9. checkbox 在jsp中的使用
  10. (转载)MySQL基础(非常全)
  11. 需要在计算机安装msxml版本,win7 Office2010提示安装MSXML版本6.10.1129.0怎么办
  12. c语言搭积木游戏,我们一起搭积木,做游戏,就这就简单
  13. cv2批量修改图片大小
  14. Java实现角度转换器
  15. spring boot火车票售卖系统毕业设计代码211004
  16. c盘users在哪(c盘users在哪)
  17. 小木虫论坛-学术科研互动平台 爬虫
  18. ASP.NET访问Excel 失败的解决方法(错误号:80070005,8000401a)
  19. 【BLE】CC2541之OAD
  20. teamviewer linux远程开机,Ubuntu远程管理(teamviewer)

热门文章

  1. JSP连接SQLServer数据库特别要注意一个小问题得到解决
  2. Think in Java读书笔记--对象入门
  3. [18/12/3]蓝桥杯 练习系统 入门级别 Fibonacci数列求模问题 题解思路
  4. 1.1浅谈Spring(一个叫春的框架)
  5. 如何理解base href=%=basePath%
  6. vue实现侧边栏手风琴效果
  7. python:关于三级菜单的新手实现
  8. c#引用参数ref与输出参数out
  9. 算法导论8-5习题解答(平均排序)
  10. Windows Server 2008 R2 小技巧