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'

 

参考

https://blog.csdn.net/qq_42778001/article/details/110883906

以上是关于Django 2021年最新版教程15数据库定义 models字段类型 限制 用法 总结的主要内容,如果未能解决你的问题,请参考以下文章

Django 2021年最新版教程9数据库查询操作

Django 2021年最新版教程11数据库删除操作

❤️Python Django网站开发 2021年最新版教程 合集❤️

Django 2021年最新版教程1windows10+python3.9.5+pycharm2021.1.1+Django3.2.3新建一个web项目 教程

Django 2021年最新版教程32Django 事务 悲观锁 乐观锁

Django 2021年最新版教程20python for循环遍历queryset