python - 在 Django 中清除多个对象上的多对多

标签 python django many-to-many

有没有办法在delete()方法之前批量清除对象关系? 我有一个模型:

class Man(models.Model):
     girlfriends = model.ManyToManyField('Girl')

并且想要删除views.py中的所有“Man”对象:

def delete_all_objects(request):
    men = Man.objects.all()

    #trying to clear objects. getting an error
    men.girlfriends.clear()

    men.delete()
    return HttpResponse("success")

出现错误: “QuerySet”对象没有属性“girlfriends”。

最佳答案

错误是正确的,查询集没有有“girlfriends”属性。这是因为查询集是一组 Man 对象,并且每个这些都具有属性

def delete_all_objects(request):
    men = Man.objects.all()
    for man in men:
        man.girlfriends.clear()
        man.delete()
    return HttpResponse('success')

我还没有测试过这个,但它应该非常接近你所需要的。

关于python - 在 Django 中清除多个对象上的多对多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28856417/

相关文章:

python - BeautifulSoup 查找类返回无

python - 如何在 python 中组合列表中的每 5 个列表?

Python 命令行参数文件名

python - 在处理包/蛋时,zc.buildout 是否比 pip 提供更多

django - 如何在安装和卸载软件包后清理 Django 数据库?

mysql - 多对多匹配多重优化

nhibernate - ORM 和多对多关系

python - odoo 13 定制多家公司的产品和供应商

Django:登录后激活用户存储的语言