1.设计介绍
图书表结构设计:
表名:Bookinfo
图书名称:title
图书发布时间:time
英雄表结构设计:
表名:Heroinfo
英雄姓名:name
英雄性别:gender
英雄简介:content
所属图书:book
图书-英雄的关系为一对多
2.配置
这里的配置和前面一样就不多赘述(在Django框架中)
因为要和mysql数据库连接,Django默认支持的是sqlite数据库,所以我们要修改为mysql
3.创建应用
python manage.py startapp book
4.定义数据库模型
在model.py中进行相关表的建立,这里有几点需要注意
(1)模型类要继承自model.Model
(2)不需要定义主键( primary_key(pk),在生成时会自动添加,并且默认递增
(3)输出对象时,会调用对象的str方法
from django.db import models
class Bookinfo(models.Model):
title=models.CharField(max_length=20,verbose_name='图书标题')
time=models.DateTimeField(verbose_name='出版日期')
def __str__(self):
return "%s" %(self.title)
class Heroinfo(models.Model):
name=models.CharField(max_length=30,verbose_name='英雄名称')
gender=models.BooleanField(default=True,verbose_name='英雄性别')
content=models.TextField(verbose_name='英雄简介')
book=models.ForeignKey('Bookinfo',verbose_name='所属书籍'
def __str__(self):
return "%s" %(self.name)
这是model.py文件内容
这里的verbose_name就是在后台显示的名字
5.迁移到mysql数据库
python manage.py makemigrations
python manage.py migrate
这样就基本成型了
6.测试数据操作
python manage.py shell
进入命令行测试
查询所有图书信息
Bookinfo.objects.all( )
新建图书信息
b=Bookinfo( )
b.title='三国志'
b.time=datetime ( year=1986,month=10,day=10 )
b.save( )
查找图书信息
b=Bookinfo.objects.get (id=1)
输出图书信息
b
b.id
b.title
修改图书信息
b.title='三国演义'
b.save ( )
删除图书信息
b.delete( )
注意:这里的保存是保存到了数据库里
7.关联对象的操作
对于Heroinfo可以按照上面的操作方式进行
添加,注意添加关联对象
h=Heroinfo( )
h.name='赵云"
h.gender='True'
h.content='一点寒芒先到,随后枪出如龙'
h.book=b
h.save( )
获得关联集和:返回当前book对象的所有hero
b.heroinfo_set.all( )
开启服务器
python manage.py runserver
如果想要在后台显示,则注册一个超级用户并且实行后台迁移即可
(方法前面的博客已经描述过)
数据库中的显示
这里Ture即是1