Python django ORM:三个模型的查询

Python django ORM:三个模型的查询,python,django,django-orm,postgresql-9.1,Python,Django,Django Orm,Postgresql 9.1,嗨,我想知道是否有人能帮我解决这个问题,因为我是django的新手 我有以下型号 class Article(models.Model): articleid = models.CharField(primary_key=True,max_length=20) author = models.CharField(max_length=300) title = models.CharField(max_length=500) # Each article can only

嗨,我想知道是否有人能帮我解决这个问题,因为我是django的新手

我有以下型号

class Article(models.Model):
    articleid = models.CharField(primary_key=True,max_length=20)
    author = models.CharField(max_length=300)
    title = models.CharField(max_length=500)

# Each article can only have one ArticleTone
class ArticleTone(models.Model):
    label = (
    ('sad', 'Sad'),
    ('happy', 'Happy'),)
    articleid = models.ForeignKey(Article, on_delete=models.CASCADE, db_column="article")
    tone = CharField(max_length=10,choices=label,blank=False, null=False)

    class Meta:
        ordering = ('tone',)
 # Each article will have 5 keywords
class ArticleKeywords(models.Model):
    articleid = models.ForeignKey(Article, on_delete=models.CASCADE, db_column="article")
    keywords = models.CharField(max_length=100,blank=False, null=False)
我能够使用此查询获得前20个实体

 ArticleKeywords.objects.values('articleid').annotate(result=Count('keywords')).order_by('-result')[:20]
并且能够通过这样的方式获得悲伤或快乐的文章

ArticleTone.objects.filter(name= 'sad');
但是,我如何将这些片段组合在一起,以获得包含前20名悲伤或快乐文章的所有文章呢。非常感谢您提供的任何帮助

你可以用


我试过这个,但它实际上并没有给我前20名悲伤或快乐的文章(基于它们在文章中的出现情况。不管怎样,谢谢你的帮助。要想获得它我试过这个,但它实际上并没有给我前20名悲伤或快乐的文章(根据他们在文章中出现的情况。不管怎样,谢谢你的帮助。我想再多翻一翻来得到它
from django.db.models import Q
q = Q(name='sad') | Q(name='happy')
ArticleTone.objects.filter(q).values('articleid').annotate(result=Count('keywords')).order_by('-result')[:20]