AutoField(**options):

根据可用id自动递增的整数字段。通常不需要直接使用它;如果您没有另外指定,主键字段将自动添加到您的模型中。

BigAutoField(**options):

64位整数,非常类似于AutoField,只不过它保证适合1到9223372036854775807之间的数字。

BigIntegerField(**options):

大整数字段 Integer:整数
一个64位整数,与IntegerField非常相似,只是它保证适合-9223372036854775808到9223372036854775807之间的数字。这个字段的默认表单小部件是TextInput。

BinaryField(max_length=None, **options):

二进制字段
一个用于存储原始二进制数据的字段。它可以分配bytes, bytearray或memoryview。

默认情况下,BinaryField设置editable为False,在这种情况下,它不能包含在中ModelForm。

BinaryField 有一个额外的可选参数:
BinaryField.max_length
字段的最大长度(以字符为单位)。最大长度在Django的验证中使用强制执行 MaxLengthValidator。

滥用 BinaryField
尽管您可能考虑过将文件存储在数据库中,但在99%的情况下,都认为这是错误的设计。此字段不能代替适当的静态文件处理。

BooleanField(**options):

布尔字段

正确/错误字段
窗口小部件此字段的默认形式CheckboxInput,或者NullBooleanSelect如果null=True。
默认值BooleanField是None当Field.default 没有定义。

CharField(max_length = None,** options)

字符串字段 ,从小到大的字符串。
对于大量文本,请使用TextField。
此字段的默认表单小部件是TextInput。
CharField 有一个额外的必需参数:
CharField.max_length
字段的最大长度(以字符为单位)。max_length在数据库级别和Django的验证中使用强制执行 MaxLengthValidator。

DateField(auto_now = False,auto_now_add = False,** options)

日期字段 ,在Python中由datetime.date实例表示。有一些额外的可选参数:

DateField.auto_now

每次保存对象时自动将字段设置为现在。对于“最后修改的”时间戳有用。请注意,始终 使用当前日期。它不仅是您可以覆盖的默认值。

该字段仅在调用时自动更新Model.save()。以其他方式(例如)对其他字段进行更新时,该字段不会更新QuerySet.update(),尽管您可以在更新中为该字段指定自定义值。

DateField.auto_now_add

首次创建对象时,将字段自动设置为现在。对于创建时间戳很有用。请注意,始终使用当前日期。它不仅是您可以覆盖的默认值。因此,即使您在创建对象时为此字段设置了一个值,也会将其忽略。如果您希望能够修改此字段,请设置以下内容,而不是 auto_now_add=True:

于DateField:default=date.today-从 datetime.date.today()

于DateTimeField:default=timezone.now-从 django.utils.timezone.now()

此字段的默认表单小部件是 TextInput。管理员添加了JavaScript日历和“今天”的快捷方式。包括一个附加的invalid_date错误消息键。

选项auto_now_add,auto_now和default是互斥的。这些选项的任何组合都将导致错误。
当前实现,设置auto_now或auto_now_add以 True会导致该领域拥有editable=False和blank=True 集。
在auto_now和auto_now_add选项将始终使用的日期默认时区在创建或更新的时刻。如果您需要不同的内容,则可能需要考虑使用您自己的可调用默认值或替代值,save() 而不是使用; auto_now或auto_now_add; 或使用a DateTimeField代替a DateField并决定如何处理显示时从datetime到date的转换。

DateTimeField(auto_now = False,auto_now_add = False,** options)

日期和时间字段,在Python中由datetime.datetime实例表示。接受与相同的额外参数DateField。
此字段的默认表单窗口小部件为单个 TextInput。管理员使用TextInput带有JavaScript快捷方式的两个单独的 小部件。

DecimalField(max_digits =无,decimal_places =无,**选项)

固定精度的十进制字段,在Python中由 Decimal实例表示。它使用验证输入 DecimalValidator。

有两个必需的参数:

DecimalField.max_digits
数字中允许的最大位数。请注意,此数字必须大于或等于decimal_places。

DecimalField.decimal_places
与数字一起存储的小数位数。
例如,要存储最大999分辨率为小数点后2位的数字,请使用:

models.DecimalField(..., max_digits=5, decimal_places=2)

并以十位小数位的分辨率存储最多约十亿的数字:

models.DecimalField(..., max_digits=19, decimal_places=10)

此字段的默认表单窗口小部件为NumberInput when localizeis False或 TextInput其他方式。

DurationField(** options)

持续时间字段, Duration:长期
一个存储时间段的字段-用Python在Python中建模 timedelta。在PostgreSQL上使用时,使用的数据类型为interval,在Oracle上使用为。否则,将使用a 微秒。INTERVAL DAY(9) TO SECOND(6)bigint

DurationField在大多数情况下都可以算术运算。但是,在除PostgreSQL以外的所有数据库上,将a的值与实例DurationField 上的算术进行比较DateTimeField将无法按预期进行。

EmailField(max_length = 254,** options)

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

FileField(upload_to = None,max_length = 100,** options)

文件上传字段。

primary_key不支持该参数,如果使用该参数将引发错误。

有两个可选参数:
FileField.upload_to
此属性提供了一种设置上传目录和文件名的方法,并且可以通过两种方式进行设置。在两种情况下,该值都将传递给该 Storage.save()方法。
如果您指定一个字符串值,则它可能包含strftime() 格式,该格式将被文件上载的日期/时间替换(以使上载的文件不会填满给定的目录)。例如:

class MyModel(models.Model):
    # 文件将上传到 MEDIA_ROOT/uploads
    upload = models.FileField(upload_to='uploads/')
    # 或者...
    # 文件将保存到 MEDIA_ROOT/uploads/2015/01/30
    upload = models.FileField(upload_to='uploads/%Y/%m/%d/')

如果使用默认值 FileSystemStorage,则将字符串值添加到MEDIA_ROOT路径中,以形成本地文件系统上将存储上传文件的位置。如果您使用其他存储,请查看该存储的文档以了解其处理方式upload_to。

upload_to也可以是可调用的,例如函数。这将被调用以获得上载路径,包括文件名。该可调用对象必须接受两个参数,并返回要传递给存储系统的Unix样式的路径(带有正斜杠)。这两个参数是:

instance
FileField定义的模型实例 。更具体地说,这是附加当前文件的特定实例。
在大多数情况下,这个对象将不会被保存到数据库中还,所以如果使用默认的AutoField,它可能还没有为它的主键字段的值。

filename 最初提供给文件的文件名。确定最终目标路径时,可以考虑也可以不考虑。

例子:

def user_directory_path(instance, filename):
    # file will be uploaded to MEDIA_ROOT/user_<id>/<filename>
    return 'user_{0}/{1}'.format(instance.user.id, filename)

class MyModel(models.Model):
    upload = models.FileField(upload_to=user_directory_path)

FileField.storage
一个存储对象,用于处理文件的存储和检索。有关如何提供此对象的详细信息,请参阅管理文件。

此字段的默认表单小部件是 ClearableFileInput。

在模型中使用FileField或ImageField(请参见下文)需要执行几个步骤:

  1. 在您的设置文件中,您需要定义:设置:MEDIA_ROOT作为Django存储上传文件目录的完整路径。(为了提高性能,这些文件不会存储在数据库中)定义:设置:MEDIA_URL作为该目录的基本公共URL ,确保该目录能够被Web服务器的是用户写入。
  2. 将FileField或添加ImageField到模型中,定义upload_to用于指定MEDIA_ROOT要用于上载文件的子目录的选项 。
    将存储在数据库中的所有文件都是该文件的路径(相对于MEDIA_ROOT)。您很可能想使用urlDjango提供的便捷属性。例如,如果ImageField调用了 your,则mug_shot可以使用来获取模板中图像的绝对路径 。{{ object.mug_shot.url }}
  3. 例如,假设您MEDIA_ROOT设置为'/home/media',并且 upload_to设置为'photos/%Y/%m/%d'。所述'%Y/%m/%d' 的部分upload_to就是strftime()格式化; '%Y'是四位数的年份,'%m'是两位数的月份,'%d'是两位数的日期。如果您在2007年1月15日上传文件,该文件将保存在目录中/home/media/photos/2007/01/15。

如果要检索上载的文件在磁盘上的文件名或文件的大小,可以分别使用name和 size属性。有关可用属性和方法的更多信息,请参见 File类参考和管理文件 主题指南。

FilePathField(path=None, match=None, recursive=False, max_length=100, **options)

文件路径 一种CharField,其选项仅限于文件系统中某个目录中的文件名。有三个特殊参数,其中第一个参数是必需的

FilePathField.path
需要。目录的绝对文件系统路径,从中可以FilePathField选择该目录 。范例:"/home/images"。

FilePathField.match
可选的。作为字符串的正则表达式,FilePathField 将用于过滤文件名。请注意,正则表达式将应用于基本文件名,而不是完整路径。示例:"foo.*.txt$",它将与名为,foo23.txt但不匹配bar.txt或的文件匹配foo23.png。

FilePathField.recursive
可选的。无论是True或False。默认值为False。指定是否path应包含的所有子目录

FilePathField.allow_files
可选的。无论是True或False。默认值为True。指定是否应包含指定位置的文件。要么是,要么 allow_folders必须是True。

FilePathField.allow_folders
可选的。无论是True或False。默认值为False。指定是否应包含指定位置的文件夹。要么是,要么allow_files必须是True。

FilePathField实例在数据库中创建为varchar 列,默认最大长度为100个字符。与其他字段一样,您可以使用max_length参数更改最大长度。

FloatField(** options)

浮点数字段 在Python中由float实例表示的浮点数。

此字段的默认表单窗口小部件为NumberInput when localizeis False或 TextInput其他方式。

FloatField 与 DecimalField

该FloatField班有时夹杂了 DecimalField阶级。尽管它们都代表实数,但它们代表的数字却有所不同。FloatField在float 内部使用Python的类型,而在内部DecimalField使用Python的Decimal类型。有关两者之间区别的信息,请参见该decimal模块的Python文档。

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

图片字段 从继承所有属性和方法FileField,还验证上载的对象是有效的图像。
除了可用于特殊属性FileField,一个ImageField也具有height和width属性。

为了便于查询这些属性,ImageField有两个额外的可选参数:

ImageField.height_field
每次保存模型实例时,模型字段的名称都会自动填充图像的高度。

ImageField.width_field
每次保存模型实例时,模型字段的名称都会自动填充图像的宽度。
需要枕头库。

ImageField实例在数据库中创建为varchar 列,默认最大长度为100个字符。与其他字段一样,您可以使用max_length参数更改最大长度。

此字段的默认表单小部件是 ClearableFileInput。

IntegerField(** options)

整数字段 从-2147483648到的值2147483647在Django支持的所有数据库中都是安全的。

它使用MinValueValidator并 MaxValueValidator基于默认数据库支持的值来验证输入。

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

通用IP地址字段 Generic:通用 字符串格式的IPv4或IPv6地址(例如192.0.2.30或 2a02:42fe::4)。此字段的默认表单小部件是 TextInput。

IPv6地址规范化如下 RFC 4291#section-2.2第 2.2节,包括使用该节第3段中建议的IPv4格式,例如 ::ffff:192.0.2.0。例如,2001:0::0:01将被标准化为 2001::1,并::ffff:0a0a:0a0a到::ffff:10.10.10.10。所有字符都将转换为小写。

GenericIPAddressField.protocol
将有效输入限制为指定的协议。可接受的值为'both'(默认值)'IPv4' 或'IPv6'。匹配不区分大小写。

GenericIPAddressField.unpack_ipv4
解压缩IPv4映射的地址,例如::ffff:192.0.2.1。如果启用此选项,则该地址将被解压缩到 192.0.2.1。默认设置为禁用。只能在protocol设为时使用'both'。

如果允许空白值,则必须允许空值,因为空白值存储为空值。

NullBooleanField(** options)

空布尔字段
就像BooleanField用null=True。使用该字段代替该字段,因为在将来的Django版本中可能会不推荐使用该字段。

PositiveIntegerField(** options)

正整数字段 Positive:正;Integer:整数
类似于IntegerField,但必须为正数或零(0)。从0到的值2147483647在Django支持的所有数据库中都是安全的。0出于向后兼容的原因,接受该值。

PositiveSmallIntegerField(** options)

正小整数字段 Small:小;
类似于PositiveIntegerField,但仅允许在特定点(与数据库有关)下的值。从0到的值32767在Django支持的所有数据库中都是安全的。

SlugField(max_length = 50,** options)

Slug是一个报纸术语。子弹是某事物的简短标签,仅包含字母,数字,下划线或连字符。它们通常在URL中使用。

像CharField一样,您可以指定max_length(也请阅读该max_length部分中有关数据库可移植性的说明)。如果max_length未指定,则Django将使用默认长度50。

表示设置Field.db_index为True。

根据一些其他值自动预填充SlugField通常很有用。您可以使用在管理员中自动执行此操作 prepopulated_fields。

它使用validate_slug或 validate_unicode_slug进行验证。

SlugField.allow_unicode
如果为True,则该字段除了接受ASCII字母外,还接受Unicode字母。默认为False。

SmallIntegerField(** options)

小整数字段
类似于IntegerField,但仅允许在特定点(与数据库有关)下的值。从-32768到的值32767在Django支持的所有数据库中都是安全的。

TextField(** options)

大文本字段 。此字段的默认表单小部件是 Textarea。

如果指定max_length属性,它将反映在Textarea自动生成的表单字段的 小部件中。但是,它不是在模型或数据库级别强制执行的。使用 CharField了点。

TimeField(auto_now = False,auto_now_add = False,** options)

时间字段,在Python中以datetime.time实例表示。接受与相同的自动填充选项DateField。

此字段的默认表单小部件是TextInput。管理员添加了一些JavaScript快捷方式。

URLField(max_length = 200,** options)

URL字符串字段
一个CharField一个URL,通过验证 URLValidator。

此字段的默认表单小部件是TextInput。

像所有CharField子类一样,URLField采用可选 max_length参数。如果未指定 max_length,则使用默认值200。

UUIDField(** options)

用于存储通用唯一标识符的字段。使用Python的 UUID类。在PostgreSQL上使用时,它存储在uuid数据类型中,否则存储在 中char(32)。

通用的唯一标识符是AutoFieldfor 的很好替代primary_key。该数据库不会为您生成UUID,因此建议使用default:

import uuid
from django.db import models

class MyUUIDModel(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)