model即模型,是跟数据库打交道的模块,用于数据处理,如增删改查。每一个模型都是python类的子类( django.db.models.Model
),模型中的每个属性都对应一个数据库字段。
1. 数据库设置
在 /应用/settings.py 中配置,默认情况下是使用自带的sqlite3。也可以换成其他数据库。初学的话我们不换就使用默认的sqlite3,它是python内置的轻量级数据库。
2. 创建模型
步骤一:设计模型
即设计表、定义表字段,通常在 /项目/应用/models.py 模块中进行。
"""/models.py"""
from django.db import models
class Reporter(models.Model):
full_name = models.CharField(max_length=70) #
def __str__(self):
return self.full_name # Reporter.objects.all()将返回该字段
class Article(models.Model):
pub_date = models.DateField()
headline = models.CharField(max_length=200)
content = models.TextField()
reporter = models.ForeignKey(Reporter, on_delete=models.CASCADE)
def __str__(self):
return self.headline
总结:
- 每个模型都由子类的类表示:
django.db.models.Model
。 - 一个模型就表示一个数据表,模型中的每个属性都对应一个数据库字段。
- 默认情况下,Django为每一个模型提供一个自动增长的主键id,如果要重新指定主键在字段中设置属性
primary_key=True
即可 - 每个字段需要根据情况定义字段类型。
- null。默认为False。如果设置为True,则表示字段允许存储空值。
- blank。默认为False。如果设置为True,则表示字段允许为空白。这个主要用来做表单验证的。
- choices。选择列表,以
[,,,]
的形式进行定义 - default。字段的默认值,可以设置为值或者一个对象。
- primary_key。主键。默认未设置则由系统自动创建。
- unique。如果为True,则该字段在整个表中必须唯一。
- foreignkey。多对一关系。在“多”的一方中定义,必须要有2个位置参数:相关的模型类名和on_delete选项
- 模型类名,就是“一”的一方的名称
- on_delete。值为CASCADE表示级联删除。还有2个值:PROTECT和RESTRICT。
- to_field。指定要关联的字段(如果不是相关对象的主键则该字段必须设置unique=True),如果没有指定则默认使用相关对象的主键
- set_null。
- set_default。
- set()
- do_nothing
- limit_choices_to
2)使用manage.py创建数据库表
python manage.py makemigrations # 查看您所有可用的模型,并为尚不存在的表创建迁移
python manage.py migrate # 运行迁移并在数据库中创建表
3. 激活模型
注:必须是至少要创建过一个数据表后才能去激活。
步骤一:在 /应用/apps.py 中设置 虚线路径 比如 apiTestConfig
from django.apps import AppConfig
class ApitestConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = '应用名'
步骤二:然后 /项目/settings.py 中将设置的 虚线路径 添加到INSTALLED_APPS中。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'应用.apps.apiTestConfig'# 把模型的虚线路径添加到这里
]
步骤三:同步数据,在命令行中执行下面的命令
python manage.py makemigrations 应用名称