Salut je me demande si quelqu'un peut m'aider avec ce problème car je suis nouveau à django.django ORM: requête de trois modèles
J'ai les modèles suivants
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)
Je suis en mesure d'obtenir les 20 premières entités utilisant cette requête.
ArticleKeywords.objects.values('articleid').annotate(result=Count('keywords')).order_by('-result')[:20]
et en mesure d'obtenir des articles qui sont tristes ou heureux en utilisant quelque chose comme ça
ArticleTone.objects.filter(name= 'sad');
Mais comment puis-je mettre les morceaux ensemble pour obtenir tous les articles qui contiennent les 20 premiers articles tristes ou heureux . Toute aide est appréciée
J'ai essayé, mais il ne me donne pas vraiment le top 20 des articles tristes ou heureux (en fonction de leur présence dans un article. Merci de toute façon pour votre aide. Va fouiller un peu plus pour l'obtenir – tom1123