zoukankan      html  css  js  c++  java
  • Django(图书管理系统2)

    day64

    内容回顾
        1. ORM外键操作
            图书表和出版社表  多对一 的关系
            
        # 书
        class Book(models.Model):
            id = models.AutoField(primary_key=True)  # 自增的ID主键
            # 创建一个varchar(64)的唯一的不为空的字段
            title = models.CharField(max_length=64, null=False, unique=True)
            # 和出版社关联的外键字段
            publisher = models.ForeignKey(to="Publisher")
            
        2. 查增删改操作
            1. 查
                book_list = models.Book.objects.all()  --> 书对象的列表

    i.publisher对应的是出版社的对象。


            2. 增
                new_book_obj = models.Book.objects.create(
                    title="新书的名字",
                    # publisher=publusher_obj,   #传对象
                    publisher_id=7     #或者传id
                )
            3. 删除
                models.Book.objects.get(id=10).delete()
                
            4. 修改
                book_obj = models.Book.objects.get(id=9) # 取出要修改的书
                book_obj.title=request.POST.get("book_title")
                book_obj.publisher_id=9
                book_obj.save()

    book表和author表通过第三张表 author2book 建立多对多的关系(一本书有多个作者,一个作者有多本书)。

    author表多对多关联book表

     1 class Publisher(models.Model):
     2     id = models.AutoField(primary_key=True)
     3     name = models.CharField(max_length=64, null=False, unique=True)
     4 
     5 # 终端执行命令
     6 
     7 class Book(models.Model):
     8     id = models.AutoField(primary_key=True)
     9     title = models.CharField(max_length=64, null=False, unique=True)
    10     # 和出版社关联的外键字段
    11     publisher = models.ForeignKey(to="Publisher")
    12 
    13     def __str__(self):
    14         return "<Book object: {}>".format(self.title)
    15 
    16 class Author(models.Model):
    17     id = models.AutoField(primary_key=True)
    18     name = models.CharField(max_length=16, null=False, unique=True)
    19     # 告诉ORM,我这张表是和book表是多对多的,ORM自动生成第三张表
    20     book = models.ManyToManyField(to="Book")
    21 
    22     def __str__(self):
    23         return "<Author object: {}>".format(self.name)
    24 
    25     # 自己实现一张第三张表 app01_author_book

    生成的表:

    其中app01_author是自动生成的,book = models.ManyToManyField(to="Book")知道了作者和书是多对多的关系 。

    书与作者多对多

    还是多对多的问题

    request.POST.getlist()  提交的数据是多个值的时候

    对应程序

    添加作者

    返回的是作者名字与书的列表

    class="active"使点击那一栏高亮

    author_list.html、book_list.html、publisher_list.html使其中的对应部分写上class="active",点击部分高亮。

    label标签加for、placeholder

    有for和ID关联后,当点击”姓名“(label的”姓名“,而非输入框中的“姓名”)光标会聚焦在输入框中,当去掉for时,只有点击输入框中的“姓名”,才会有光标,这种功能常用于checkbox。

    placeholder默认显示。

    以上详细内容见: mysiteday62

  • 相关阅读:
    [Abp vNext 源码分析]
    C# 结合 PInvoke 对接 IP 摄像头的笔记
    Abp vNext 自定义 Ef Core 仓储引发异常
    [Abp vNext 源码分析]
    [Abp vNext 源码分析]
    [Abp vNext 源码分析]
    网站SEO中服务器优化的三个问题
    用香港服务器还是国内服务器好
    租用香港服务器最重要的三个问题
    如何选择服务器操作系统
  • 原文地址:https://www.cnblogs.com/112358nizhipeng/p/10326244.html
Copyright © 2011-2022 走看看