Django拥有内置的ORM框架(object relational mapping),通过对象操作数据库。
模型是项目的数据来源,其中每一个模型都是一个python类,并且全部继承django.db.models.Model类
在使用指令创建项目时,django默认不会自动创建模型文件;在创建应用时,会主动创建模型文件。
项目的数据存在数据库中,每模型文件中的一个子类都是一个数据表
创建一个phoneNumber类,定义字段类型为models.CharField
的两个字段,表示的类型是varchar
from django.db import models
class phoneNumber(models.Model): # 每一个类都必须继承models.Model
name = models.CharField(max_length=10, verbose_name='名称')
number = models.CharField(max_length=11, verbose_name='电话号码')
在模型文件中定义完类后,需要配置模型,在项目的配置文件setting.py
中修改INSTALLED_APPS
和DATABASES
变量的值
INSTALLED_APPS = [
...
'创建的应用名' # 添加模型文件所在的位置
]
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
Django中默认的数据库是SQLite3,同时也支持MySQL、Oracle和PostgreSQL等数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mysqldb',
'USER': '',
'PASSWORD': '',
'HOST': '', # 数据库所在的IP地址,为空表示127.0.0.1
'POST': '', # 连接端口号,为空表示默认端口号3306
}
}
在任何数据改动后,都需要执行更新数据的操作,在Django中叫做数据库迁移。
python manage.py makemigrations 应用名称 # 在应用模块进行数据的更新
python manage.py migrate # 数据更新到数据库中
001_initial.py
迁移文件;migrations
目录;from django.db import models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='phoneNumber',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=10, verbose_name='名称')),
('number', models.CharField(max_length=11, verbose_name='电话号码')),
],
),
]
Django通过Manager提供数据库访问接口。默认是为每个模型添加一个名为
objects
的管理器,调用objects的各种
方法对数据进行相关操作。
python manager.py shell
进入当前项目的交互式环境进行添加数据;>>> from apps.models import phoneNumber # 导入模型
>>> n = phoneNumber(name='小米', number='123') # 创建模型
>>> n.save() # 保存数据
>>> from apps.models import phoneNumber # 导入模型
>>> n = phoneNumber.objects.create(name='小米', number='123')
不管使用哪种方法进行数据保存,django都会默认给新添加的数据进行添加一个名为id的字段,作为模型的主键,
也可以指定id的值。
>>> from apps.models import phoneNumber # 导入模型
>>> n = phoneNumber.objects.create(id='2', name='小米', number='123')