Whenever I use Annotate with Case/When logic to return a boolean, the resulting queryset is almost twice as long.
Model :
class Message(models.Model):
readers = models.ManyToManyField(Compte, related_name='messages')
Message.objects.count() // return 495
Then :
qs = Message.objects.annotate(read=Case(
When(readers=Compte.objects.first(), then=Value(True),
default=Value(False),
outputfield=BooleanField()))
qs.count() // return 940
What am I missing here ? Django 2.2.9 / PostgreSQL