Django 2021年最新版教程15数据库定义 models字段类型 限制 用法 总结
Posted 软件工程小施同学
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 = -1
STATUS_SAVED = 0
STATUS_PUBLISHED = 1
class 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 = 0
FACE_AUTHENTICATION = 1
PAYMENT_AUTHENTICATION = 2
ORDINARY_USER = 1
TICKET_INSPECTOR = 2
SYSTEM_ADMINISTRATOR = 3
class 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 = 1
SIDE_ORDER = 0
STATUS_CANCELLED = 0
STATUS_VALID = 1
STATUS_CHECKED = 2
class Meta:
db_table = 'BookingRecord'
参考
以上是关于Django 2021年最新版教程15数据库定义 models字段类型 限制 用法 总结的主要内容,如果未能解决你的问题,请参考以下文章
❤️Python Django网站开发 2021年最新版教程 合集❤️
Django 2021年最新版教程1windows10+python3.9.5+pycharm2021.1.1+Django3.2.3新建一个web项目 教程