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对象。