Python 教程之 Django(9)对模型中的字段进行验证

简介: Python 教程之 Django(9)对模型中的字段进行验证

对模型中的字段进行验证

Django模型中的内置字段验证是所有Django字段预定义的默认验证。每个字段都带有来自Django验证器的内置验证。例如,IntegerField 附带了内置验证,即它只能存储整数值,并且该值也存储在特定范围内。

极客应用程序的 models.py 文件中输入以下代码。

from django.db import models
from django.db.models import Model
# 在此处创建模型。
class GeeksModel(Model):
  geeks_field = models.IntegerField()
  def __str__(self):
    return self.geeks_field

在运行临时迁移并在Django上迁移并渲染模型之后,让我们尝试使用字符串“GfG是最好的”创建一个实例。

image.png

你可以在管理界面中看到,不能在整数字段中输入字符串。同样,每个字段都有自己的验证。

基本模型数据类型和字段列表

模型最重要的部分和模型的唯一必需部分是它定义的数据库字段列表。字段由类属性指定。以下是 Django 中使用的所有字段类型的列表。

 

字段名称 描述: __________
AutoField 它是一个自动递增的整数字段。
BigAutoField 它是一个 64 位整数,很像 AutoField,只是它保证适合从 1 到 9223372036854775807 的数字。
BigIntegerField 它是一个 64 位整数,很像 IntegerField,只是它保证适合从 -9223372036854775808 到 9223372036854775807 的数字。
BinaryField 用于存储原始二进制数据的字段。
BooleanField 真/假字段。 此字段的默认表单构件是复选框输入。
CharField 它是用于从小到大尺寸输入的字符串字段
DateField 日期,在 Python 中由日期时间.date 实例表示
  它用于日期和时间,在 Python 中由日期时间.datetime 实例表示。
DecimalField 它是一个固定精度的十进制数,在 Python 中由十进制实例表示。
DurationField 用于存储时间段的字段。
EmailField 它是一个字符字段,用于检查值是否为有效的电子邮件地址。
FileField 它是一个文件上传字段。
FloatField 它是一个浮点数,在 Python 中由浮点实例表示。
ImageField 它从 FileField 继承所有属性和方法,但也验证上传的对象是否为有效图像。
IntegerField 它是一个整数字段。从 -2147483648 到 2147483647 的值在 Django 支持的所有数据库中都是安全的。
GenericIPAddressfield 字符串格式的 IPv4 或 IPv6 地址(例如 192.0.2.30 或 2a02:42fe::4)。
NullBooleanField 就像布尔字段一样,但允许 NULL 作为选项之一。
PositiveIntegerField 类似于整数域,但必须为正数或零 (0)。
PositiveSmallIntegerField 就像正整数字段一样,但只允许某个(依赖于数据库的)点下的值。
SlugField 鼻涕虫是一个报纸术语。slug是某物的简短标签,仅包含字母,数字,下划线或连字符。它们通常用于网址。
SmallIntegerField 它类似于整数字段,但只允许某个(依赖于数据库的)点下的值。
TextField 一个大的文本字段。此字段的默认表单构件是文本区域。
TimeField 一个时间,在 Python 中由日期时间.time 实例表示。
URLField 由网址验证的网址的字符字段。
UUIDField 用于存储通用唯一标识符的字段。使用蟒蛇的 UUID 类。在 PostgreSQL 上使用时,它存储在 uuid 数据类型中,否则存储在字符(32) 中。

 

关系字段

Django还定义了一组表示关系的字段。

 

字段名称 描述: __________
ForeignKey 多对一的关系。需要两个位置参数:与模型相关的类和on_delete选项。
ManyToManyField 多对多关系。需要一个位置参数:与模型相关的类,其工作方式与 ForeignKey 完全相同,包括递归和惰性关系。
OneToOneField 一对一的关系。从概念上讲,这类似于具有 unique=True 的外来密钥,但关系的“反向”端将直接返回单个对象。

 

字段选项

字段选项是为每个字段提供的参数,用于应用某些约束或将特定特征赋予特定字段。例如,将参数 null = True 添加到 CharField 将使其能够在关系数据库中存储该表的空值。

以下是字符字段可以使用的字段选项和属性。

 

字段选项 描述: __________
Null 如果为 True,Django 将在数据库中将空值存储为 NULL。默认值为
Blank 如果为 True,则允许该字段为空。默认值为
db_column 要用于此字段的数据库列的名称。如果没有给出,Django将使用该字段的名称。  
Default 字段的默认值。这可以是值或可调用的对象。如果可调用,则每次创建新对象时都会调用它。  
help_text 要与表单小部件一起显示的额外“帮助”文本。即使您的字段未在表单上使用,它对于文档也很有用。  
primary_key 如果为 True,则此字段是模型的主键。
editable 如果为 False,则该字段将不会显示在管理员或任何其他模型窗体中。在模型验证期间也会跳过它们。默认值为 True。  
error_messages error_messages参数允许您覆盖字段将引发的默认消息。传入包含与要覆盖的错误消息匹配的键的字典。  
help_text 要与表单小部件一起显示的额外“帮助”文本。即使您的字段未在表单上使用,它对于文档也很有用。  
verbose_name 字段的人类可读名称。如果未给出详细名称,Django 将使用字段的属性名称自动创建它,并将下划线转换为空格。  
validators 要为此字段运行的验证程序列表。  
Unique 如果为 True,则此字段在整个表中必须是唯一的。


目录
相关文章
|
3天前
|
数据可视化 DataX Python
Seaborn 教程-绘图函数
Seaborn 教程-绘图函数
30 8
|
3天前
Seaborn 教程-主题(Theme)
Seaborn 教程-主题(Theme)
21 7
|
3天前
|
Python
Seaborn 教程-模板(Context)
Seaborn 教程-模板(Context)
22 4
|
3天前
|
数据可视化 Python
Seaborn 教程
Seaborn 教程
20 5
|
4月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
214 4
|
1月前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
162 45
|
1月前
|
安全 数据库 开发者
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第26天】本文详细介绍了如何在Django框架下进行全栈开发,包括环境安装与配置、创建项目和应用、定义模型类、运行数据库迁移、创建视图和URL映射、编写模板以及启动开发服务器等步骤,并通过示例代码展示了具体实现过程。
55 2
|
1月前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
Python Web框架比较:Django vs Flask vs Pyramid
43 1
|
3月前
|
机器学习/深度学习 人工智能 算法
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
植物病害识别系统。本系统使用Python作为主要编程语言,通过收集水稻常见的四种叶片病害图片('细菌性叶枯病', '稻瘟病', '褐斑病', '稻瘟条纹病毒病')作为后面模型训练用到的数据集。然后使用TensorFlow搭建卷积神经网络算法模型,并进行多轮迭代训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地模型文件。再使用Django搭建Web网页平台操作界面,实现用户上传一张测试图片识别其名称。
140 22
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
|
2月前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
Python Web框架比较:Django vs Flask vs Pyramid
38 4