Django项目实战—-模型篇

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

字段类型

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

id = models.AutoField(primary_key=True)

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

一个64位整数,范围 1 到 9223372036854775807
类似于BigIntegerField的无符号位

BigIntegerField(max_length=None,**options)

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

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

bool值的字段
用来存放 true和false

CharField(max_length=None, **options)

存放字符串。必须指定最长的长度
如果文本的长度太长可以考虑 TextField

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(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)

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

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

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

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

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

存储文件目录

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

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

IPv4 或 IPv6 地址,字符串格式

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

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

整数 范围-2147483648 到 2147483647

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

存储 JSON 编码数据的字段

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

存放时间

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

关系字段

 ForeignKey(to, on_delete, **options)

多对一的关系

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

class A(model.Model):
....

class B(model.Model):
    属性 = models.ForeignKey(to=A,on_delete=models.CASCADE ...)

ManyToManyField(to, **options)

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

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

class Book(models.Model):
    ...

    authors = models.ManyToManyField(Author)
OneToOneField(to, on_delete, parent_link=False, **options)

一对一的关系

  • to 指定关联的类
class A(model.Model):
...

class B(model.Model):
    属性 = models.OneToOneField(A)

Original: https://blog.csdn.net/qq_52007481/article/details/126403236
Author: 小鱼干儿♛
Title: Django项目实战—-模型篇

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/734098/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 安装Numpy

    1)、安装Python3.4版本以上,因为这样会自带pip(包管理器的安装) 检查Python版本。 打开cmd,输入Python ; 2)、去下载numpy https://ww…

    Python 2023年8月23日
    042
  • pycharm如何导入第三方库函数(Blog.No.1)

    目录前言一、修改下载的第三方库函数存储路径a.查看存储路径​b.具体更改的操作​二、使用指令下载第三方库及调用 前言 pyhton语言中函数分为四种分别为: a. 内置函数(即程序…

    Python 2023年8月31日
    049
  • python词云制作(最全最详细的教程)

    今天手把手教大家用python制作词云,图片的效果如下: 首先,需要准备的操作是:1、安装好python3系列版本2、安装python第三方库wordcloud;(本条及以下第三方…

    Python 2023年8月28日
    080
  • 重复造轮子 SimpleMapper

    接手的项目还在用 TinyMapper 的一个早期版本用来做自动映射工具,TinyMapper 虽然速度快,但在配置里不能转换类型,比如 deleted 在数据库中用 0、1 表示…

    Python 2023年10月22日
    046
  • python设置速度_如何使我的步行动画以设定的速度播放? (Python,Pygame)

    您需要跟踪时间,因此您可以使用pygame.time.get_ticks或clock.tick()返回的时间(通常称为dt表示增量时间),然后在经过一段时间后更新图像. pygam…

    Python 2023年9月22日
    033
  • Pandas处理时间类型数据

    时间序列数据描述 数据分析的分析对象不仅仅限于数值型和类别型两种,常用的数据类型还包括了时间类型.通过时间类型数据能够获取东岸对应的年月日和星期等信息.但时间类型数据在读入Pyth…

    Python 2023年8月16日
    055
  • redis持久化机制

    踢一场足球需要很长的时间,那么就需要充足的体力来支撑。那么redis中的持久化机制是怎么样的?接下来就来聊一聊。每一个足球运动员的身体是真的强,为了胜利,在大草原上奔跑,那个路程我…

    Python 2023年9月28日
    035
  • 安装pygame 最新版,简单安装流程

    把PyCharm 和Python 更新到最新版本 我的更新的是 Python 3.9 (64-bit) 和 PyCharm 3.9.7 装好PyCharm 3.9.7 后把新的解释…

    Python 2023年9月21日
    042
  • 【云服务器 ECS 实战】云服务器新手指南(配置+使用详解)

    * – 一、写在前面 – 二、ECS 云服务是什么 – 三、云服务器的购买与配置 – + 购买云服务器 + 密码与安全组配置 + 远…

    Python 2023年9月28日
    042
  • 记录在conda创建虚拟环境遇到的问题

    为什么要创建虚拟环境? 我们知道很多框架所需要不同的版本库,不可能今天用这个版本,明天把这个库换成另外一个版本 按照正常流程,首先如果没有添加国内的源,下载过程中会非常慢。所以先添…

    Python 2023年9月7日
    032
  • pytest基本应用(二)

    一.在测试过程中,经常需要测试是否如期抛出预期的异常,以确定异常处理模块生效。 在 pytest 中使用 pytest.raises()进行异常捕获 异常捕获 def test_z…

    Python 2023年9月14日
    063
  • GAMES104-渲染中光和材质的数学魔法

    绘制的核心是什么?光:光子、反射反弹材质:光和物质怎么反应渲染:Shader 如何去做一些复杂的计算 渲染宗师,James Kajiya1986年,提出了渲染方程 BRDF 双向反…

    Python 2023年9月28日
    042
  • Python3 39行 贪吃蛇

    import pygame,sys,random from pygame.locals import * if __name__ == "__main__": …

    Python 2023年9月25日
    031
  • python –Tkinter详解

    简介 tkinter tkinter(Tk interface)是Python的标准GUl库,支持跨平台的GUl程序开发。tkinter适合小型的GUl程序编写,也特别适合初学者学…

    Python 2023年8月1日
    067
  • python怎么安装pip?

    学习过Python的小伙伴都知道,想要安装Python扩展框架就需要使用到pip工具来安装,但有些Python版本并没有内置pip安装工具,今天小千就来教大家如何去检验是否安装和如…

    Python 2023年8月4日
    042
  • 关于账本数据库:你想知道的这里都有

    💕前言:十二月份出个openGuass集合专栏,带领大家浅浅的认识一下国产数据库吧💕 1. 什么是账本数据库 区块链大家想必都耳熟能详,比特币、以太坊甚至狗狗币等代币,作为区块链的…

    Python 2023年10月7日
    031
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球