一、类型
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'
参考
https://blog.csdn.net/qq_42778001/article/details/110883906