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()  提交的数据是多个值的时候

对应程序

添加作者

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

猜你喜欢

转载自www.cnblogs.com/112358nizhipeng/p/10326244.html