Python django ORM:三个模型的查询
嗨,我想知道是否有人能帮我解决这个问题,因为我是django的新手 我有以下型号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
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]