Python Django教程之模型中字段验证详解
作者:海拥 发布时间:2021-01-04 18:56:48
标签:Django,字段,验证
对模型中的字段进行验证
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是最好的”创建一个实例。
你可以在管理界面中看到,不能在整数字段中输入字符串。同样,每个字段都有自己的验证。
基本模型数据类型和字段列表
模型最重要的部分和模型的唯一必需部分是它定义的数据库字段列表。字段由类属性指定。以下是 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,则此字段在整个表中必须是唯一的。 |
来源:https://juejin.cn/post/7154621244665495565


猜你喜欢
- 能够为数据库数据提供的最简单的用户界面之一就是窗体,窗体可以一次性呈现出来自同一记录的各个域。本文通过python3+pyqt5改写实现了p
- 前言通常在项目中,一般都需要一种编程语言来操作数据库,使用Python来操作数据库有着天然的优势,因为Python的字典和MongoDB的文
- 模块内部封装了很多实用的功能,有时在模块外部调用就需要将其导入。常见的方式有如下几种:1 . import>>> impo
- 这篇文章主要介绍了Python如何计算语句执行时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可
- 在使用Django项目中,From表单提交了图片集合var formdata = new FormData();formdata.appen
- 1.问题现象go编译的时候报错import cycle not allowedcycle意思很简单就是循环的意思。代表的就是一个包被循环的导
- 一、设置画布turtle为我们展开用于绘图区域,我们可以设置它的大小和初始位置turtle.screensize(canvwidth=600
- 1、搭载QT环境按win+R输入 pip install pyqt5 下载QT5 当然也可以去Qt的官网的下载 ,使用命令行更快捷方便 所以
- 导语哈喽!大家晚上好,我是木木子吖,很久没给大家更新游戏代码的类型啦~骰子,是现在娱乐场所最常见的一种玩乐项目。一般骰子分两人和两人以上玩,
- # coding:utf-8import urllibimport urllib2import cookielibfrom bs4 impo
- 下面为您介绍sql下用了判断各种资源是否存在的代码,需要的朋友可以参考下,希望对您学习sql的函数及数据库能够有所帮助。-- 库是否存在if
- 今天用到了img.paste函数,就写篇笔记记录一下,方便回顾。做人脸检测,产生负样本的时候想把图片中人连部分用背景的某一部分替换掉,然后再
- 最近因为项目需求,需要写个爬虫爬取一些题库。在这之前爬虫我都是用node或者php写的。一直听说python写爬虫有一手,便入手了pytho
- 一、值的类型 早在介绍JS的数据类型的时候就提到过基本类型和引用类型
- 1.选择数据库 USE刚链接到MySQL时,没有数据库打开供你使用,而我们需要选择一个数据库,才能进行以下的操作。方法:USE语句USE M
- 原始数据在这里1.观察数据首先,用Pandas打开数据,并进行观察。import numpy import pandas as pdimpo
- 背景:作为一个python小白,今天从菜鸟教程上看了一些python的教程,看到了python的一些语法,对比起来(有其他语言功底),感觉还
- 1. 介绍BoltBoltDB是纯Go语言实现的持久化解决方案,保存数据至内存映射文件。称之为持久化解决方案不是数据库,因为数据库这个词有很
- Vue 中使用 jQuery 和 Bootstrap 不是特别符合 Vue 原生的写法,但是有时候又要用,所以放上我的引入设置,供大家参考。
- 另外他们列出的这些区别有些是蛮有意义的,有些可能由于他们本人的MySQL DBA的身份,对Oracle的理解有些偏差,有些则有凑数的嫌疑.