清除 Django 中多个对象的多对多
Clear many to many on multiple objects in Django
有没有办法在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')
我还没有对此进行测试,但它应该非常接近您的需要。
除非您还试图删除所有相关的女孩,否则 men.delete()
将完全达到您的要求。中间 table 有一个指向 Man
的外键,删除一个对象将默认删除指向它的所有外键(除非您覆盖 on_delete
行为)。
有没有办法在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')
我还没有对此进行测试,但它应该非常接近您的需要。
除非您还试图删除所有相关的女孩,否则 men.delete()
将完全达到您的要求。中间 table 有一个指向 Man
的外键,删除一个对象将默认删除指向它的所有外键(除非您覆盖 on_delete
行为)。