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,则此字段在整个表中必须是唯一的。


目录
相关文章
|
23天前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能食品加工优化的深度学习模型
使用Python实现智能食品加工优化的深度学习模型
126 59
|
11天前
|
机器学习/深度学习 数据采集 供应链
使用Python实现智能食品安全追溯系统的深度学习模型
使用Python实现智能食品安全追溯系统的深度学习模型
34 4
|
18天前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能食品市场预测的深度学习模型
使用Python实现智能食品市场预测的深度学习模型
56 5
|
1天前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能食品消费模式分析的深度学习模型
使用Python实现智能食品消费模式分析的深度学习模型
82 70
|
3天前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能食品消费习惯分析的深度学习模型
使用Python实现智能食品消费习惯分析的深度学习模型
89 68
|
1月前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
143 45
|
9天前
|
机器学习/深度学习 数据采集 安全
使用Python实现智能食品物流管理的深度学习模型
使用Python实现智能食品物流管理的深度学习模型
20 5
|
15天前
|
机器学习/深度学习 数据采集 供应链
使用Python实现智能食品价格预测的深度学习模型
使用Python实现智能食品价格预测的深度学习模型
43 6
|
16天前
|
机器学习/深度学习 数据采集 搜索推荐
使用Python实现智能食品推荐系统的深度学习模型
使用Python实现智能食品推荐系统的深度学习模型
50 2
|
20天前
|
机器学习/深度学习 算法 数据可视化
使用Python实现深度学习模型:智能食品配送优化
使用Python实现深度学习模型:智能食品配送优化
37 2