Django模型数据类型和字段列表

Django模型数据类型和字段列表

模型最重要的部分和唯一需要的部分是它定义的数据库字段列表。字段是由类属性指定的。注意不要选择与模型API(如清洁、保存或删除)相冲突的字段名。

示例:

from django.db import models

class Musician(models.Model):
    first_name = models.CharField(max_length=200)
    last_name = models.CharField(max_length=200)
    instrument = models.CharField(max_length=200)

class Album(models.Model):
    artist = models.ForeignKey(Musician, on_delete=models.CASCADE)
    name = models.CharField(max_length=100)
    release_date = models.DateField()
    num_stars = models.IntegerField()

设置一个字段来存储任何类型的数据,就像在C/C++中决定一个数据类型来存储一个特定的整数,char等。Django中的字段是用来存储特定类型数据的数据类型。例如,要存储一个整数,可以使用IntegerField。这些字段对特定的数据类型有内置的验证,也就是说你不能在IntegerField中存储 “abc”。同样,对于其他字段也是如此。这篇文章围绕着Django模型中可以使用的主要字段展开。

以下是在开始使用Django Fields之前应该注意的一些关键属性。

字段类型

模型中的每个字段都应该是适当的字段类的实例。Django使用字段类的类型来决定一些事情。

  • 列的类型,它告诉数据库要存储什么样的数据(如INTEGER,VARCHAR,TEXT)。
  • 渲染表单字段时要使用的默认HTML小部件(例如:<input type="text">,<select></select>)。
  • 最小的验证要求,在Django的管理员和自动生成的表单中使用。

Django有几十种内置字段类型,可以用来保存任何类型的数据,从数字到整个HTML文件。下面是Django中使用的所有字段类型的列表。

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

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

关系字段

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

字段名称 描述
ForeignKey 一个多对一的关系。需要两个位置参数:模型所涉及的类和on_delete选项。
ManyToManyField 一个多对多的关系。需要一个位置参数:模型与之相关的类,其作用与对ForeignKey的作用完全相同,包括递归和懒惰关系。
OneToOneField 一个一对一的关系。从概念上讲,这类似于unique=True的ForeignKey,但关系的 “反面 “将直接返回单个对象。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程