For my sanity, I replace A and B with an article and a blog, respectively. This simplifies the analysis of related names. So we have:
class Article(models.Model): keywords = models.ManyToManyField(Keyword) class Blog(models.Model): keywords = models.ManyToManyField(Keyword)
This should work in a single query:
article = Article.objects.all()[0] Blog.objects.filter(keywords__in=Keyword.objects.filter(articles=article))
Django will combine Keyword.objects.filter into a Blog.objects.filter query, making only one database call.
source share