Por exemplo, temos dois modelos:
class Book(models.Model):
title = models.CharField(max_length = 255, db_index = True)
class Thumb(models.Model):
book = models.ForeignKey(Book)
E queremos excluir todos os livros, que têm 0 polegares ou 5 polegares ou menos ou igual a 5 polegares, etc …
Primeiro, devemos obter a lista desses objetos.
Obtenha livros com 0 polegar:
bad = Book.objects.annotate(nt=Count('thumb')).filter(nt__e=0)
Obtenha livros com 5 polegares:
bad = Book.objects.annotate(nt=Count('thumb')).filter(nt__e=5)
Obtenha livros com menos ou igual a 5 polegares:
bad = Book.objects.annotate(nt=Count('thumb')).filter(nt__lte=5)
Obtenha livros com 5 polegares maiores ou iguais:
bad = Book.objects.annotate(nt=Count('thumb')).filter(nt__gte=5)
Obtenha livros com menos de 5 polegares:
bad = Book.objects.annotate(nt=Count('thumb')).filter(nt__lt=5)
Obtenha livros com mais de 5 polegares:
bad = Book.objects.annotate(nt=Count('thumb')).filter(nt__gt=5)
Excluir esses objetos é bastante simples:
for item in bad:
item.delete()