Django详细用法之图书-英雄

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值