AutoField

一个自增的整数类型字段。通常不需要手动进行编写,Django会自动添加帮你添加字段:id = models.AutoField(primary_key=True),这是一个从1开始计数的自增字段。
如果你需要自己设置主键,那么务必将字段设置为primary_key = True。Django在模型中只允许有一个自增字段,并且该字段必须为主键。

BoolenField

布尔类型字段,默认值为None。在HTML表单中提现为CheckboxInput标签。如果需要接受null值,需使用NullBoolenField。

CharField

字符串类型字段。该字段比必须接受一个max_length参数,用于表示该字段最大长度。

TextField

用于存储大量文本内容的字段,在HTML中表现形式为Textarea标签,如设置max_length将只有前端页面中会受到输入字数的限制。

DateField

日期类型字段,由python的datetime.date实例表示。

auto_now

每当对象被保存时会将字段更新为当前日期,常用于保存最后修改时间。

auto_now_add

每当对象被创建时,将字段更新为当日期,常用于保存最后创建时间。
注意:auto_now与auto_now_add是互斥的,只能使用一个。

DateTimeField

日期时间类型字段,由Python的datetime.datetime实例表示。与DateField相比而言,只是多了时、分、秒的显示,其他功能、参数、用法及默认值等都一样。

TimeField

时间字段,Python中的datetime.time的实例,与DateField参数一致,只显示时、分、秒。

DecimalField

固定精度的十进制小数,相当于Python的Decimal。此字段类型有两个必填属性,max_digits:最大位数,必须大于或等于小数点位数,decimal_places:小数点位数,精度。
localize = False时,该字段的默认表单部件是NumberInput,否则将会是TextInput。

FloatField

使用Python的float类型表示的浮点数字段。

IntegerField

整数类型字段,取值范围为-2147483648~2147483647。

PositiveIntegerField

包含0的正整数字段,取值范围0~2147483647.

EmailField

邮箱类型字段,默认max_length=254。使用该字段最大的好处是,会通过Django自带的EmailValidator进行邮箱地址合法性验证。

FileField与ImageField

FileField

上传文件类型。在数据库内,我们实际保存的是一个字符串类型,默认最大长度为100,也可以通过max_length参数自定义。真是的文件是保存在服务器的文件系统内。
upload_to:用于设置上传地址的目录和文件名,可以通过两种方式进行设置。

  1. 上传至指定目录
    class MyModel(models.Model):
     # 如果使用默认的FileSystemStorage,则字符串值将附加到MEDIA_ROOT路径中,以在不低文件系统上形成存储上传文件的位置。
     upload = models.FileField(upload_to="uploads/")
    
  2. upload_to接受一个可以回调的函数
    如是用回调函数作为upload_to的值,回调函数必须要有以下两个必要参数。
  • instance:FileField模型示例。
  • filename:上传文件的文件名。
def user_directory_path(instance, filename):
    return "user/{0}/{1}".format(instance.user.id, filename)


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

ImageField

图片类型字段,它的基本用法和特性与FileField一样,只是多了height_field和width_field两个属性。

  • height_field:保存有图片高度信息的模型字段名。
  • width_field:保存有图片宽度信息的模型字段名。
    在使用ImageField字段时,需要先通过pip install pillow安装pillow模块

FileField和ImageField的使用步骤

  1. 需要在setting.py文件中配置MEDIA_ROOT,作为上传文件至服务器的基本路径,并配置MEDIA_URL,作为公用URL,指向上传文件的基本路径。
  2. 文件将上传至定义好的upload_to参数指定的目录下。
  3. 真正保存在数据库中的,只是指向上传文件路径的字符串。可通过其url属性,在Django的模板中访问这些文件。例如,{{ user.avatar.url }}
  4. name和size属性可以获取文件的名称和大小。

使用建议

在保存上传文件时,一定要对上传的文件进行安全性检查,确保他人上传的内容和格式,以避免服务器出现安全漏洞。

GenericIPAddressField

字符串形式的IPV4或者IPV6地址,参数protocol默认值为both,可选IPv4或者IPv6,表示你的IP地址类型。

URLField

用保存URL地址的字符串类型,默认最大长度为200.

UUIDField

使用Python中的uuid存储唯一标识码的字段,在PostgreSQL数据库中保存为uuid类型,其它数据库中为char(32),这个字段是自增主键的最佳替代品。
数据库无法自己生成uuid,因此需要设置default参数

import uuid
from django.db import models


class MyUUIDModel(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4)
0条评论

相关推荐

django教程

r

Django 2019-05-20 10:53:53

Celery

celery学习资料

Django 2019-05-25 18:41:55

Django-rest-framework教程

django-rest-framework教程。

Django 2019-07-18 16:33:26

django实用资料

django项目从0到1自己总结的实用的资料,大部分常用的功能这里都有

Django 2019-05-08 18:21:34