Django模型

一、简介

​ 模型是Django中用于与数据库进行交互的部分,是定义在models.py文件中的一个类。

  • 模型被定义在models.py文件中,数据库中的每张表被映射为models.py中的一个类,并且这个类继承于django.db.models.Model

  • 模型中的每个属性都相当于对应表中的字段

  • Django对各种支持的数据库进行封装,使一套Django代码可以无缝应用于所有受支持的数据库。

二、代码示例:

# app下的models.py文件
from django.db import models
class Person(models.Model):
    first_name = models.CharField(max_lenth=30)
    last_name = models.CharField(max_length=30)

​ 上面定义了Person模型,如果没有特别改变(Meta对象),在数据迁移后,将会生成一个名为app名.Person的数据库,并且具备名为first_namelast_name两个字段。

三、字段类型

| 字段名 | 说明 | |——————————————————————————————————|—————————————————————————-| | AutoField(**options) | 整型:如果未指定主键,Django将会由此自动生成一个主键 | | PositiveSmallIntegerField(**options) | 小整数字段0 to 32767 | | SmallIntegerField(**options) | 小整数字段-32768 to 32767 | | IntegerField(**options) | 有符号整型字段:-2147483648~2147483647 | | PositiveIntegerField(**options) | 无符号整型:0~2147483647 | | BigAutoField(**options) | 64位无符号整型:设置主键 | | BigIntegerField(**options) | 64位有符号整型:默认表单部件为TextInput | | BinaryField(max_length=None, **options) | 字节字段:editable属性默认为False | | BooleanField(**options) | 布尔字段:默认值为None | | NullBooleanField(**options) | 布尔字段:允许为Null | | CharField(max_length=None, options) | 字符串字段 | | DateField(auto_now=False, auto_now_add=False, **options) | 日期字段:auto_now=True时,每次修改该模型。将自动设置该字段为当前日期 | | TimeField(auto_now=False, auto_now_add=False, **options) | 时间字段:用于储存时间 | | DateTimeField(auto_now=False, auto_now_add=False, **options) | 日期时间字段:储存日期和时间 | | DecimalField(max_digits=None, decimal_places=None, **options) | 浮点型字段max_digits字段指定最大位数,decimal_places指定了小数位数 | | DurationField(**options) | 持续时间字段:常用于进行时间运算,存在兼容性问题 | | EmailField(max_length=254, **options) | 字符字段:储存前进行邮件地址检查 | | FileField(upload_to=None, max_length=100, **options) | 文件上传字段:不支持设置为主键,否则将会造成错误 | | FilePathField(path=None, match=None, recursive=False, max_length=100, **options) | 字符字段:储存文件路径 | | FloatField(**options) | 浮点字段 | | ImageField(upload_to=None, height_field=None, width_field=None, max_length=100, **options) | 图像字段:继承于FileField字段,但是进行图像是否为空检查 | | GenericIPAddressField(protocol=’both’, unpack_ipv4=False, **options) | 字符串字段:用于储存IP地址 | | SlugField(max_length=50, **options) | 标称字段:用于使url更易阅读 | | TextField(**options) | 文本字段:用于储存大文本数据 | | URLField(max_length=200, **options) | 字符字段:用于储存url | | UUIDField(**options) | UUID字段:用于储存全局唯一数据 |

四、Meta选项

​ Meta选项是定义在模型中的一个类。

man