Django ManyToMany 添加、删除关联、查询


多对多表之间关系表

models.py文件代码

from django.db import models

# Create your models here.

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

    def __str__(self):
        return "publisher_name:{}".format(self.name)

class Book(models.Model):
    id = models.AutoField(primary_key=True)
    title = models.CharField(max_length=128,null=False)
    publisher = models.ForeignKey(to=Publisher,related_name="books")

    def __str__(self):
        return "book_title:{}".format(self.title)

class Author(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=16,null=False)
    book = models.ManyToManyField(to="Book")

    def __str__(self):
        return "author_name:{}".format(self.name)

查询与操作方法代码

import os

if __name__ == '__main__':
    #加载Django项目的配置信息
    os.environ.setdefault("DJANGO_SETTINGS_MODULE","testinclude.settings")
    #导入Django,并启动Django项目
    import django
    django.setup()

    from ormtest.models import Author,Book
   
    author = models.Author.objects.get(name="小白")
    author_books = author.book.all() # 获取小白写的所有书

    author.book.create(title="zabbix从入门到精通",publisher_id=3) # 为小白创建书,指定相应的出版社,并自动创建关联记录

    book = models.Book.objects.get(title="网络基础原理")
    author.book.add(book) #add:为小白作者,添加一本书(网络基础原理)

    book = models.Book.objects.get(title="网络基础原理")
    author.book.remove(book) #删除一本书<网络基础原理>
    author.book.remove(4) #删除id为4的书,并去除关联
    
    author.book.clear() # 清空小白的书

  book.author_set.all() #反向查询,获取书的所有作者

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM