Django query filter on nested ManyToMany field

Viewed 46

My models are below:

  class Label(models.Model):
      name = CharField()

  class Message(models.Model):
      labels = ManyToManyField(Label)

  class Thread(models.Model):
      messages = ManyToManyField(Message)

I have to filter out thread whose all messages don't have label assigned. Thread --> all Messages --> Labels.empty()

I have tried this Query:

Thread.objects.filter( Q(messages__labels__isnull=True) )

But it returns thread object, even if one message in that thread doesn't have label. How to get query which iterates all messages and check if labels are empty in that each message.

0 Answers
Related