Django批量删除一次只删除一百行

时间:2018-03-29 09:06:10

标签: mysql django django-models one-to-many bulk-delete

我有两个模型,它们之间有一对多关系:

class HomeCarrier(models.Model) 
    short_name = models.CharField(max_length=32, unique=True)

class CarrierZipCoverage(models.Model):
    zip_code = models.CharField(max_length=5)
    home_carrier = models.ForeignKey('HomeCarrier', null=True, blank=True)

根据docs

  

您还可以批量删除对象。每个QuerySet都有一个delete()   方法,删除该QuerySet的所有成员。

根据source评论

  

删除实际上是2个查询 - 一个用于查找相关对象,另一个用于删除。

当我试图批量删除27k运营商的覆盖邮政编码

时,我感到很惊讶
carrier.carrierzipcoverage_set.all().delete()

我在数据库中每100行都有一个删除查询。而我希望一次只能在mysql日志中看到所有覆盖邮政编码的一个删除查询。

mysql log

问题是有一种方法可以使用单个删除查询从数据库中删除所有实体而无需求助于raw sql吗?

0 个答案:

没有答案