定义模型

了解完字段类型之后, 我们就可以定义模型

# 书籍信息
('笑傲江湖','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/