前言
- 本篇来学习Django的manage工具提供了shell命令工具,帮助我们配置好当前工程的运行环境(如连接好数据库等),以便可以直接在终端中执行测试python语句
准备数据
- 插入上一篇创建的书籍信息和人物信息表中
# 书籍信息 insert into bookinfo(name, pub_date, readcount,commentcount, is_delete) values ('射雕英雄传', '1980-5-1', 12, 34, 0), ('天龙八部', '1986-7-24', 36, 40, 0), ('笑傲江湖', '1995-12-24', 20, 80, 0), ('雪山飞狐', '1987-11-11', 58, 24, 0); # 人物信息 insert into peopleinfo(name, gender, book_id, description, is_delete) 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);
工具使用
- 通过如下命令进入shell
python manage.py shell
- 导入书籍模型类
- 解决查询返回对象问题,添加__str__ 方法
class BookInfo(models.Model): # 创建字段,字段类型 name = models.CharField(max_length=20, verbose_name='名称') # verbose_name admin管理后台使用 pub_date = models.DateField(verbose_name='发布日期', null=True) readcount = models.IntegerField(default=0, verbose_name='阅读量') commentcount = models.IntegerField(default=0, verbose_name='评论量') is_delete = models.BooleanField(default=False, verbose_name='逻辑删除') class Meta: db_table = 'bookinfo' # 指明数据库表名 verbose_name = '图书' # 在admin站点中显示的名称 def __str__(self): """定义每个数据对象的显示信息""" return self.name # 准备人物列表信息的模型类 class PeopleInfo(models.Model): # 定义一个有序字典 GENDER_CHOICES = ( (0, 'male'), (1, 'female') ) name = models.CharField(max_length=20, verbose_name='名称') gender = models.SmallIntegerField(choices=GENDER_CHOICES, default=0, verbose_name='性别') description = models.CharField(max_length=200, null=True, verbose_name='描述信息') is_delete = models.BooleanField(default=False, verbose_name='逻辑删除') # 外键 ForeignKey # 系统会字典为外加添加 id # 外键的级联操作 1对多 (书籍对人物) # CASCADE:删除主表数据时连通一起删除外键表中数据 book = models.ForeignKey(BookInfo, on_delete=models.CASCADE, verbose_name='图书') class Meta: db_table = 'peopleinfo' verbose_name = '人物信息' def __str__(self): return self.name
- 重新进入shell终端