Django 多对多操作
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