django内置的批量增加方法为bulk_create,批量更新方法为bulk_update。在一些多对多的模型中我们可以使用批量创建和修改进行快速创建。但是bulk_updated()的缺点在于有时候不好传参数。那么对于调用bulk_update不好传参的数据如何批量更新呢?
我们可以拆解,将批量修改可以 拆分为删除和批量创建两步
举个例子,我们现在有文章表和标签表是多对多模型。模型层如下所示

class Article_Tag(models.Model):
    article = models.ForeignKey(Article,on_delete=models.CASCADE)
    tag = models.ForeignKey(Tag,on_delete=models.CASCADE)
class Article(models.Model):
    #...省略掉文章等与要讲的内容不相关的字段
    tags = models.ManyToManyField(to='Tag',
                                  through='Article_Tag',
                                  through_fields=('article','tag')
class Tag(models.Model):
    name = models.CharField(verbose_name="标签",max_length=32)
    blog = models.ForeignKey(verbose_name="站点名称",to='Blog',null=True,on_delete=models.CASCADE)

比如多对多关联产生的第三张表Article_Tag有如下内容:
在这里插入图片描述
现在我们想要修改原本与文章id为7相关联的标签1,2改为与文章7关联的标签是3,4。
第一步删除 delete = models.Article_Tag.objects.filter(article__id=7).delete() 第二步将批量创建的内容生成对象以准备批量加入数据库
many_list = [[7,3],[7,4]]
object_list=[]
for in_list in many_list:
object_list.append(models.Article_Tag(article_id=in_list[0], tag_id=in_list[1]))
第三步将生成的对象用批量加入数据库
create = models.Article_Tag.objects.bulk_create(object_list)
代码与数据库运行结果如下图
在这里插入图片描述
在这里插入图片描述

django内置的批量增加方法为bulk_create,批量更新方法为bulk_update。在一些多对多的模型中我们可以使用批量创建和修改进行快速创建。但是bulk_updated()的缺点在于有时候不好传参数。那么对于调用bulk_update不好传参的数据如何批量更新呢?我们可以拆解,将批量修改可以拆分为删除和批量创建两步。举个例子,我们现在有文章表和标签表是多对多模型。模型层如下所示class Article_Tag(models.Model): article = models.Fo
ege from DCB_CS_USER u inner join DCB_CS_USER_PRIVILEGE_MAPPING m on m.username = u.username inner join DCB_CS_PRIVILEGE p on p.privilege_id = m.privilege_id;  user,权限和中间 参考:https://blog.csdn.net/xianzgiyou/article/details/50210431 删除可以使用
文章目录第一步: 创建blog应用第二步: 编写models.py模型文件第三步: 使用orm进行多对多增删改查操作添加关联关系通过关联字段查询所有关联对象移除关联关系更新关联关系总结 第一步: 创建blog应用 在任意项目中创建一个博客(blog)应用来练习Django多对多关系的使用。 python manage.py startapp blog 创建完在setting中注册blog应用,不然进行模型迁移会出错。 INSTALLED_APPS = [ ...... 'blog'
使用upload组件上传头像upload组件使用上传成功返回的函数Cascader级联选择器实现三级联动前台.第一步:在form单中添加Cascader组件前台.第二步:再返回的数据中定义选择器的值前台.第三步:获取三级联动数据, 及内容改变事件后台.第一步:定义方法后台.第二步:实现映射三级联动回显多选框的处理多选框回显 upload组件使用 <el-form-item label="头...
# models.py class Book(models.Model): author = models.ManyToMany(to='author', relate_name='author') ...字段 class author(models.Mod...
Django中,可以使用select_related()方法一次性查询多个记录对应的外键数据。这样可以避免N+1查询问题,提高查询效率。 例如,如果有一个为Book,外键为Author,可以这样查询: books = Book.objects.all().select_related('author') 这样books变量中的每一个Book对象都会有一个author属性,通过这个属性可以访问对应的Author对象。