定义模型
了解完字段类型之后, 我们就可以定义模型
# 书籍信息
('笑傲江湖','1995-12-24',28,18,0)
# 人物信息
('东方不败',0,3,'葵花宝典',0)
准备模型代码
from django.db import models
# 书籍信息模型
class BookInfo(models.Model):
name = models.CharField(max_length=20) #图书名称
pub_date = models.DateField(null=True) #发布日期
readcount = models.IntegerField(default=0) #阅读量
commentcount = models.IntegerField(default=0) #评论量
isDelete = models.BooleanField(default=False) #逻辑删除
#元类信息 : 修改表名
class Meta:
db_table = 'bookinfo'
# 人物信息模型
class PeopleInfo(models.Model):
name = models.CharField(max_length=20) #人物姓名
gender = models.BooleanField(default=True) #人物性别
description = models.CharField(max_length=20) #人物描述
isDelete = models.BooleanField(default=False) #逻辑删除
book = models.ForeignKey(BookInfo) # 外键约束,人物属于哪本书
# 元类信息 : 修改表名
class Meta:
db_table = 'peopleinfo'
模型迁移
python manage.py makemigrations
python manage.py migrate
查看表结构
新增数据
- 数据量比较大, 直接使用sql语句新增数据. 比站点管理要快
insert into bookinfo(name,pub_date,readcount,commentcount,isDelete) values
('射雕英雄传','1980-5-1',12,34,0),
('天龙八部','1986-7-24',36,40,0),
('笑傲江湖','1995-12-24',28,18,0),
('雪山飞狐','1987-11-11',58,24,0);
insert into peopleinfo(name,gender,book_id,description,isDelete) values
('郭靖',1,1,'降龙十八掌',0),
('黄蓉',0,1,'打狗棍法',0),
('黄药师',1,1,'弹指神通',0),
('欧阳锋',1,1,'蛤蟆功',0),
('梅超风',0,1,'九阴白骨爪',0),
('乔峰',1,2,'降龙十八掌',0),
('段誉',1,2,'六脉神剑',0),
('虚竹',1,2,'天山六阳掌',0),
('王语嫣',0,2,'神仙姐姐',0),
('令狐冲',1,3,'独孤九剑',0),
('任盈盈',0,3,'弹琴',0),
('岳不群',1,3,'华山剑法',0),
('东方不败',0,3,'葵花宝典',0),
('胡斐',1,4,'胡家刀法',0),
('苗若兰',0,4,'黄衣',0),
('程灵素',0,4,'医术',0),
('袁紫衣',0,4,'六合拳',0);
查询表数据 : 测试新增数据结果
bookinfo
表peopleinfo
表
展示模型数据
视图部分
from django.shortcuts import render from models import * # 书籍列表信息视图 def bookList(request): # 查询数据库书籍信息 bookInfos = BookInfo.objects.all() # 构造上下文 context = {'booklist':bookInfos} return render(request, 'Book/booklist.html', context)
模板部分
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>书籍信息</title>
</head>
<body>
<ul>
{% for book in booklist %}
<li>{{ book.name }}</li>
{% endfor %}
</ul>
</body>
</html>
查看结果 :
http://127.0.0.1:8000/booklist/