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_name和last_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选项是定义在模型中的一个类。