zoukankan      html  css  js  c++  java
  • Django学习笔记〇六——项目2,图书管理系统

    我们前面做了个用户的管理系统,为了以后的学习,我们这次做一个稍微复杂的项目——图书管理系统。

    说他复杂,但是功能上跟前面的第一个项目差不多,但是数据库里多了一些关联,数据库里有三个表:图书,出版社和作者。出版社和图书是一对多的关系,也就是说一个出版社可以出版很多书;书跟作者是多对多的关系:一本书可以有多个作者,当然一个作者可以写很多书。

    ORM类的声明

    出版社类

    出版社类比较简单,就是一个主键外键一个name字段就可以了

    class Publisher(models.Model):
        id = models.AutoField(primary_key=True)
        name = models.CharField(null = False,max_length=16)

    图书类

    图书类就稍微复杂一些,通过外键把图书和出版社联系在一起

    class Books(models.Model):
        id = models.AutoField(primary_key=True)
        title = models.CharField(null=False,max_length=32)
        publisher = models.ForeignKey(to='Publisher',on_delete=models.CASCADE)

    关联外键的时候,参数on_delete是Django2.0版本以后必须显性定义的,否则会报错

    作者类

    作者类比较有意思,我们前面说了它跟书籍是多对多的关联,这里就要用到Django的ORM里ManyToManyField的方法

    class Author(models.Model):
        id = models.AutoField(primary_key=True)
        name = models.CharField(null=False,max_length=10,unique=True)
        book = models.ManyToManyField(to='Books')

    我们在定义作者类的时候用到了多对多的外键关联,在索引数据的时候可以通过author查到book,但是要从book查author的时候就要用到反向查询了,具体的使用方法可以看一看前面的笔记——Django内外键的使用

  • 相关阅读:
    STM32F407Discovery开发板使用环境搭建
    NIO初识
    Mac下Boost环境搭建
    Android Studio增加NDK代码编译支持--Mac环境
    LNMP平台搭建---PHP安装篇
    LNMP平台搭建---MySQL安装篇
    支付系统流程
    从html字符串中获取div内容---jquery
    记一次进入新公司快速融入开发团队经历
    DataTable复制自身行
  • 原文地址:https://www.cnblogs.com/yinsedeyinse/p/12521470.html
Copyright © 2011-2022 走看看