Django 多對多操作
阿新 • • 發佈:2021-08-11
class Book(models.Model): name = models.CharField(max_length=32, verbose_name='書名') pub = models.ForeignKey('Publisher', on_delete=models.CASCADE,related_name='books', related_query_name='book') def __str__(self): return self.name class Meta: verbose_name = 'name' verbose_name_plural= verbose_name class Author(models.Model): name = models.CharField(max_length=32, verbose_name='姓名') books = models.ManyToManyField('Book') def __str__(self): return self.name class Meta: verbose_name = "name" verbose_name_plural = verbose_name
author_obj = models.Author.objects.filter(pk=1) author_obj.books# 管理物件 # all 查詢所有關聯的物件 author_obj.books.all() # set 設定關係 [1,2] [物件,物件] author_obj.books.set([1,2]) # [] # add 新增關係 id 物件 author_obj.books.add(1,2) # remove 刪除關係 id 物件 author_obj.books.remove(1,2) # clear 清空關係 author_obj.books.clear() # create 新增一個所關聯的物件,並且和當前的物件繫結關係 author_obj.books.create(name='xxxx', pub_id='10') # 一對多關係中, 反向查詢獲取到的關係管理物件 # 引數中只能使用物件,不能使用id # 當ForeginKey中有引數null=True時,才有remove、clear方法
作者:Star-Hitian,轉載請註明原文連結:https://www.cnblogs.com/Star-Haitian/p/15129616.html