Django项目实战----模型篇

简介: Django项目实战----模型篇

Django项目实战----模型篇


Django 内置了数十种字段类型;如果 Django 内置类型不能满足你的需求,你可以很轻松地编写自定义的字段类型;


字段类型

AutoField


根据可用的 ID 自动递增。通常设置主键的时候应用它参数必须设置primary_key=True

范围和IntegerField一样

id = models.AutoField(primary_key=True)

不过主键一般不用自己设置,django会自动帮你设置一个自增的主键


BigAutoField


一个64位整数,范围 1 到 9223372036854775807

类似于BigIntegerField的无符号位


BigIntegerField

BigIntegerField(max_length=None,**options)


一个64位整数,范围 -9223372036854775808 到 9223372036854775807


BinaryField


存储二进制字段,可以用来存储文件,但是在数据库中存储文件是非常不理智的行为


BooleanField


bool值的字段

用来存放 true和false


CharField

CharField(max_length=None, **options)


存放字符串。必须指定最长的长度

如果文本的长度太长可以考虑 TextField


DateField

DateField(auto_now=False, auto_now_add=False, **options)


用来存放时间的字段

  • 参数auto_now=True 每次保存对象时自动将该字段设置成当前时间
  • 参数auto_now_add=True 只在第一次创建对象时自动将该字段设置为创建的时间,不可以被修改

这两个参数互斥,不能同时为True


    first_time = models.DateField(auto_now_add=True) 
    update_tim = models.DateField(auto_now=True)


DecimalField


DecimalField(max_digits=None, decimal_places=None, **options)


一个固定精度的十进制数

  • max_digits 数字中允许的最大位数 该值需大于decimal_places
  • decimal_places 小数位数
    举例
    要存储最高为 999.99 的数字,精度为小数点后 2 位
number = models.DecimalField(max_digits=5, decimal_places=2)


DurationField


用于存储时间段的字段 (不常用)


EmailField(max_length=254, **options)


邮箱,

使用 EmailValidator 来检查该值是否为有效的电子邮件地址。


FileField


 FileField(upload_to='', storage=None, max_length=100, **options)


文件上传字段

这个文件字段的需要注意的太多了,回来单独出一篇文章


FilePathField


FilePathField(path='', match=None, recursive=False, allow_files=True, allow_folders=False, max_length=100, **options)


存储文件目录


FloatField


表示的浮点数

注意FloatField 和 DecimalField 的区别,一个不能精确表示小数,一个能能精确表示小数


GenericIPAddressField


 GenericIPAddressField(protocol='both', unpack_ipv4=False, **options)


IPv4 或 IPv6 地址,字符串格式


ImageField


ImageField(upload_to=None, height_field=None, width_field=None, max_length=100, **options)


保存图片,存储的是文件路径


IntegerField


整数 范围-2147483648 到 2147483647


JSONField


JSONField(encoder=None, decoder=None, **options)


存储 JSON 编码数据的字段


TextField


大的文本字段,一般用来存放文章内容


TimeField


存放时间


UUIDField


存储通用唯一标识符的字段,使用 Python 的 UUID 类


关系字段

ForeignKey

 ForeignKey(to, on_delete, **options)


多对一的关系

  • to 指定关联的类
  • on_delete 在删除关联数据时采用的方式,根据不同的需求进行选择


#一个A类实例对象关联多个B类实例对象
class A(model.Model):
....
class B(model.Model):
    属性 = models.ForeignKey(to=A,on_delete=models.CASCADE ...)
    # CASCADE 级联删除


ManyToManyField


ManyToManyField(to, **options)


多对多 需要一个位置参数:模型相关的类

  • to 指定关联的类
class Author(models.Model):
    ...
class Book(models.Model):
    ...
    authors = models.ManyToManyField(Author)


OneToOneField


OneToOneField(to, on_delete, parent_link=False, **options)


一对一的关系

  • to 指定关联的类
class A(model.Model): 
...
class B(model.Model):
    属性 = models.OneToOneField(A)


相关文章
|
3月前
|
存储 安全 网络协议
Python 教程之 Django(9)对模型中的字段进行验证
Python 教程之 Django(9)对模型中的字段进行验证
44 0
Python 教程之 Django(9)对模型中的字段进行验证
|
3月前
|
API 数据库 Python
Python 教程之 Django(8)在 Django 管理界面中渲染模型
Python 教程之 Django(8)在 Django 管理界面中渲染模型
35 0
Python 教程之 Django(8)在 Django 管理界面中渲染模型
|
3月前
|
SQL 数据库 索引
Django MTV - 模型层 - (专题)知识要点与实战案例
Django MTV - 模型层 - (专题)知识要点与实战案例
51 0
|
2月前
|
关系型数据库 MySQL 数据库
数据迁移脚本优化过程:从 MySQL 到 Django 模型表
在大规模的数据迁移过程中,性能问题往往是开发者面临的主要挑战之一。本文将分析一个数据迁移脚本的优化过程,展示如何从 MySQL 数据库迁移数据到 Django 模型表,并探讨优化前后的性能差异。
|
1月前
|
存储 NoSQL 中间件
【Django+Vue3 线上教育平台项目实战】登录功能模块之短信登录与钉钉三方登录
在当今的数字化时代,用户认证是任何在线服务安全性的基石。本文将简明扼要地介绍登录注册流程中的核心概念:HTTP无状态性、Session、Token与JWT,并详细阐述两种实用登录方式—— 手机号登录验证(借助容联云/云通讯服务) 与钉钉第三方登录。我们将探讨这些概念的基本原理,并深入解析两种登录方式的实现流程,旨在帮助开发者提升用户认证的安全性与便捷性。
【Django+Vue3 线上教育平台项目实战】登录功能模块之短信登录与钉钉三方登录
|
13天前
|
机器学习/深度学习 前端开发 数据挖掘
基于Python Django的房价数据分析平台,包括大屏和后台数据管理,有线性、向量机、梯度提升树、bp神经网络等模型
本文介绍了一个基于Python Django框架开发的房价数据分析平台,该平台集成了多种机器学习模型,包括线性回归、SVM、GBDT和BP神经网络,用于房价预测和市场分析,同时提供了前端大屏展示和后台数据管理功能。
|
8天前
|
存储 数据库 开发者
Django Web架构:全面掌握Django模型字段(下)
Django Web架构:全面掌握Django模型字段(下)
22 2
|
1月前
|
前端开发 JavaScript API
【Django+Vue3 线上教育平台项目实战】构建课程详情页与集成视频播放功能
随着数字化教育的兴起,构建一个高效、用户友好的线上教育平台至关重要。本文将探讨如何使用Django与Vue.js 3结合,实现一个包含课程列表和课程详情页(含视频播放功能)的线上教育平台部分。本文主要介绍了如何设计数据库模型、处理数据查询、构建动态前端界面,并集成视频播放功能,为用户带来流畅的学习体验。
【Django+Vue3 线上教育平台项目实战】构建课程详情页与集成视频播放功能
|
5天前
|
SQL 关系型数据库 MySQL
如何创建 Django 模型
如何创建 Django 模型
8 0
|
8天前
|
存储 数据处理 数据库
Django Web架构:全面掌握Django模型字段(上)
Django Web架构:全面掌握Django模型字段(上)
10 0