默认的数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3', #数据库引擎
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), #数据库名称
}
}
Model
from django.db import models
class Publisher(models.Model):
name = models.CharField(max_length=30)
address = models.CharField(max_length=50)
city = models.CharField(max_length=60)
state_province = models.CharField(max_length=30)
country = models.CharField(max_length=50)
website = models.URLField()
def __str__(self):
return self.name #返回名称 ,相当于tostring 吧
class Author(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=40)
email = models.EmailField()
class Book(models.Model):
title = models.CharField(max_length=100)
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
publication_date = models.DateField()
每个模型使用一个Python类表示
是django.db.models.Model的子类
父类Model包含与数据库交互所需的全部机制
模型以简洁明了的语法定义字段
一般,一个模型对应一个数据库表
安装模型
- 把books应用添加到设置文件中安装的应用列表中
- 在settings.py文件 INSTALLED_APPS设置
INSTALLED_APPS={
book
}
#python manage.py check
check 命令运行Django系统检查框架
该模型会自动创建相对应的表
- 自动生成的表名结合应用的名称和模型名的小写形式,这个行为可以覆盖
- 会为各个表添加主键 ,id字段,外键 _id
- 外键关系 REFERENTCES 语句指明
基本的数据访问
from books.models import Publisher # 导入模型类
p1 = Publisher(name='')
p1.save() #相当于insert
自增主键id
.objects.all
相当于查询 select
.objects.filter(name=’xiaohua’)
条件查询
- 配置数据库
- 建model
- 安装
- 导入使用
模型就是对数据的操作进行了一次封装
使对数据的操作更方便,更透明