有没有办法在delete()方法之前批量清除对象关系? 我有一个模特:
class Man(models.Model):
girlfriends = model.ManyToManyField('Girl')
并希望删除所有" Man" views.py中的对象:
def delete_all_objects(request):
men = Man.objects.all()
#trying to clear objects. getting an error
men.girlfriends.clear()
men.delete()
return HttpResponse("success")
获取错误: '查询集'对象没有属性'女朋友'。
答案 0 :(得分:3)
错误是正确的,查询集不具有'girlfriends'属性。这是因为查询集是一组Man
个对象,每个这些都具有属性
def delete_all_objects(request):
men = Man.objects.all()
for man in men:
man.girlfriends.clear()
man.delete()
return HttpResponse('success')
我没有对此进行测试,但它应该非常接近你所需要的。
答案 1 :(得分:0)
除非您还试图删除所有相关的女孩,否则men.delete()
将达到您想要的效果。中间表具有Man
的外键,删除对象将默认删除指向它的所有外键(除非您覆盖on_delete
行为)。