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

news/2025/2/19 10:26:08

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

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

字段类型

AutoField

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

python">id = models.AutoField(primary_key=True)

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

BigAutoField

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

BigIntegerField

python">BigIntegerField(max_length=None,**options)

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

BinaryField

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

BooleanField

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

CharField

python">CharField(max_length=None, **options)

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

DateField

python">DateField(auto_now=False, auto_now_add=False, **options)

用来存放时间的字段

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

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

python">    first_time = models.DateField(auto_now_add=True) 
    update_tim = models.DateField(auto_now=True)

DecimalField

python">DecimalField(max_digits=None, decimal_places=None, **options)

一个固定精度的十进制数

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

DurationField

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

EmailField(max_length=254, **options)

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

FileField

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

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

FilePathField

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

存储文件目录

FloatField

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

GenericIPAddressField

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

IPv4 或 IPv6 地址,字符串格式

ImageField

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

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

IntegerField

整数 范围-2147483648 到 2147483647

JSONField

python">JSONField(encoder=None, decoder=None, **options)

存储 JSON 编码数据的字段

TextField

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

TimeField

存放时间

UUIDField

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

关系字段

ForeignKey

python"> ForeignKey(to, on_delete, **options)

多对一的关系

  • to 指定关联的类
  • on_delete 在删除关联数据时采用的方式,根据不同的需求进行选择
python">#一个A类实例对象关联多个B类实例对象
class A(model.Model):
....
class B(model.Model):
    属性 = models.ForeignKey(to=A,on_delete=models.CASCADE ...)
    # CASCADE 级联删除

ManyToManyField

python">ManyToManyField(to, **options)

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

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

OneToOneField

python">OneToOneField(to, on_delete, parent_link=False, **options)

一对一的关系

  • to 指定关联的类
python">class A(model.Model): 
...
class B(model.Model):
    属性 = models.OneToOneField(A)
文章来源:https://blog.csdn.net/qq_52007481/article/details/126403236
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.niftyadmin.cn/n/1371708.html

相关文章

⼩程序中⽀持es7的async语法

选择增强编译 下载 facebook 的 regenerator 库中的 regenerator/packages/regenerator-runtime/runtime.js 在⼩程序⽬录下新建⽂件夹 lib/runtime/runtime.js 并复制代码 但是小程序新版不用下载库 直接复制代码引用就可以了 代码如下 /*** Copyright (c) 2014-present, Fa…

AssertionError: Model app can‘t have more than one auto-generated field.

我在使用django写项目的时候同步数据库出现报错 AssertionError: Model app1.Commodity cant have more than one auto-generated field.自己排查了半天才发现自己的一个字段名写错了 错误的原因是一个model里面不能有两个自动自增的列 models.AutoField和models.BigAutoField…

【蓝桥杯大赛】简单回忆一下我的蓝桥杯比赛历程

努力是为了让自己不平庸前言/背景大赛简介参赛流程参赛经历经验心得资料分享❤️ 作者简介:大家好我是小鱼干儿♛是一个热爱编程、热爱算法的大三学生,蓝桥杯国赛二等奖获得者🐟 个人主页 :https://blog.csdn.net/qq_52007481⭐ 个…

Pandas | value_counts() 的详细用法

value_counts() 函数得作用 用来统计数据表中,指定列里有多少个不同的数据值,并计算每个不同值有在该列中的个数,同时还能根据指定得参数返回排序后结果。 返回得是Series对象 value_counts(values,sortTrue, ascendingFalse, normalizeFal…

小程序滑倒底部生命周期onReachBottom,下拉刷新事件

onReachBottom滑动底部触发 这个是生命周期函数! 实现下拉刷新 在页面的配置文件中定义 关闭下拉刷新事件不然会一直执行下拉刷新样式 当没有下拉刷新事件时执行也不会报错所以可以大胆定义

深度学习之文本分类 ----FastText

❤️ 作者简介:大家好我是小鱼干儿♛是一个热爱编程、热爱算法的大三学生,蓝桥杯国赛二等奖获得者🐟 个人主页 :https://blog.csdn.net/qq_52007481⭐ 个人社区:【小鱼干爱编程】🔥 算法专栏:算…