您当前的位置: 首页 >  数据库
  • 0浏览

    0关注

    1477博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Django 2021年最新版教程15】数据库定义 models字段类型 限制 用法 总结

软件工程小施同学 发布时间:2021-06-07 22:00:45 ,浏览量:0

一、类型 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

关注
打赏
1665320866
查看更多评论
立即登录/注册

微信扫码登录

0.0482s