1

I have two models with one to many relation between them:

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)

According to the docs

You can also delete objects in bulk. Every QuerySet has a delete() method, which deletes all members of that QuerySet.

According to the source comments

The delete is actually 2 queries - one to find related objects, and one to delete.

I suprised when I'm trying to bulk delete 27k carrier's coverage zip codes

carrier.carrierzipcoverage_set.all().delete()

I got one delete query for each hundred rows in database. Whereas I expected to see only one delete query in mysql log for all coverage zip codes at a time.

mysql log

The question is there a way to delete all entities from the database with single delete query without recourse to raw sql?

Danil
  • 4,781
  • 1
  • 35
  • 50

0 Answers0