如何在Django中批量删除多对多关联的非活跃用户?
Django批量移除多对多关联中状态为inactive的用户
不用循环逐个调用remove,可以直接操作多对多关系的中间表,通过ORM批量删除关联记录,仅需1次数据库查询就能完成:
批量移除所有公司关联的inactive用户
如果要移除所有Company实例关联的状态为inactive的用户,直接操作自动生成的中间表模型:
# 利用多对多关系的through模型批量删除 Company.customers.through.objects.filter( user__active=False ).delete()
移除单个公司关联的inactive用户
如果仅针对某个特定Company实例,在过滤条件中加入该公司即可:
target_company = Company.objects.get(pk=你的公司ID) target_company.customers.through.objects.filter( company=target_company, user__active=False ).delete()
这种方式完全基于Django ORM实现,无需编写原生SQL,相比循环调用remove能大幅减少数据库查询次数,效率提升明显。
内容的提问来源于stack exchange,提问作者paul23
相关产品推荐
相关产品推荐

