Python 分组并加入django模型

Python 分组并加入django模型,python,sql,django,Python,Sql,Django,我有以下型号: class Post(models.Model): description = models.TextField(max_length=500) title = models.CharField(max_length=500) created_at = models.DateTimeField(auto_now_add=True, blank=False) creator = models.ForeignKey(User, on_delete=models.CAS

我有以下型号:

class Post(models.Model):
  description = models.TextField(max_length=500)
  title = models.CharField(max_length=500)
  created_at = models.DateTimeField(auto_now_add=True, blank=False)
  creator = models.ForeignKey(User, on_delete=models.CASCADE, related_name='posts')
  topic = models.ForeignKey(Topic, on_delete=models.CASCADE, related_name='posts')
  image = models.ForeignKey(Image, on_delete=models.CASCADE, related_name='posts')
  tags = models.ManyToManyField(Tag, related_name='posts')
  ratings = GenericRelation(Rating)


class Rating(models.Model):
  content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
  object_id = models.PositiveIntegerField()
  content_object = GenericForeignKey()

  user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='ratings')
  value = models.SmallIntegerField(default=None, validators=[
      MinValueValidator(DISLIKE_VALUE),
      MaxValueValidator(LIKE_VALUE)
  ])
我想以Django查询的形式执行以下SQL语句:

SELECT p.id, p.title, p.topic_id, SUM(r.value) 
  FROM api_post p 
  JOIN api_rating r 
  ON p.id=r.object_id
  WHERE r.content_type_id=18 
  GROUP BY p.id 
  LIMIT 5;
我通读了文档,最接近的是:

Post.objects.annotate(rating=Sum('ratings__value')).order_by('ratings').values('id', 'title', 'description', 'rating')
另外,我并不希望模型中只包含这些字段,因为它在字典中返回这些字段,我希望它在对象中