Python 如何在django中编写连接三个具有filter和order by条件的表的查询

Python 如何在django中编写连接三个具有filter和order by条件的表的查询,python,django,Python,Django,我有三个模型: class Category(models.Model): category_name = models.CharField(max_length=128, unique=True) category_alias = models.CharField(max_length=128, unique=True) category_desc = models.TextField() class Question(models.Model): user

我有三个模型:

class Category(models.Model):
    category_name = models.CharField(max_length=128, unique=True)
    category_alias = models.CharField(max_length=128, unique=True)
    category_desc = models.TextField()

class Question(models.Model):
    user = models.ForeignKey(User)
    category = models.ForeignKey(Category)
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField(auto_now=True)
    is_approved = models.BooleanField(default=0)

class Answer(models.Model):
    user = models.ForeignKey(User)
    question = models.ForeignKey(Question)
    answer = models.TextField()
    is_approved = models.BooleanField(default=0)

class Rating(models.Model):
    user = models.ForeignKey(User)
    answer = models.ForeignKey(Answer)
    rating = models.BooleanField(default=0)
我需要一个查询,将找到最喜欢的答案(答案有最多的评分)与它的问题和一个特定类别的评级。这意味着,如果答案2的评分最高,那么我将获得该答案的对象,以及任何特定类别的相关问题和评分

class Rating(models.Model):
    user = models.ForeignKey(User)
    answer = models.ForeignKey(Answer)
    rating = models.BooleanField(default=0, related_name='rating')


answers = Answer.objects.filter(question__category__id=category_id).annotate(
    rating_sum=Count(rating__rating)).order_by('-rating_sum')

您应该使用“annotate”方法来计算肯定分数并按此字段排列答案。

我需要问题->答案->参照类别id进行评分。从答案中访问问题有什么问题:问题=答案。问题,以相同的方式访问分数:分数=答案。评分。全部()工作正常-谢谢。但是我可以在上面的查询中使用category\u id而不是question\u id吗?请看编辑后的问题。