0

我想过滤一个项目的_set,但是在下面的问题中,当我这样做时,它不在我认为的字段上。我需要使用 rating__rating 来获取 post 表中 rating 表的 rating 列。

在 django 中,我有这个:

class Story(models.Model):
    user = models.ForeignKey(User)
    ...

class Post(models.Model):
    post = models.TextField(max_length=345)
    story = models.ForeignKey(Story)
    ...

class Rating(models.Model)
    rating = models.IntegerField()
    post = models.ForeignKey(Post)

然后我可以找到给定帖子的所有具有设定值的评级:

def getPostsForStory(id):
    return arrangeCountOfRatings(Post.objects.filter(story=id))

def arrangeCountOfRatings(postList):
    for post in postList:
        post.rateA = post.rating_set.filter(rating=rateA).count()
    return postList

但是我如何从给定的故事中做到这一点?也就是说,假设我想应用上述获取每个帖子的计数的过程,但是给定一个 Story 对象?

def getStoryItemsForUser(request):
    return arrangeCountOfItems(Story.objects.filter(user=request.user.id)

def arrangeCountOfItems(storyList):
    for story in storyList:
        story.rateA = story.post_set.filter(rating=rateA).count()
    return storyList

没有得到我想要的(计数都是错误的 - 要么为零,如果有带有评级的帖子,1

编辑:

啊。因此问题是:

story.rateA = story.post_set.filter(rating=rateA).count()

不搜索我想要的 - 它有效地搜索 rating__id 而不是 rating__rating

所以我只是将其更改为读取 rating__rating,简单。

4

1 回答 1

0

关于什么:

    story.rateA = Rating.objects.filter(rating=ratingA, post__story=story).count()

编辑:这同样适用于帖子评级(相当于您的代码):

    post.rateA = Rating.objects.filter(rating=ratingA, post=post).count()

计算指定帖子/故事的评分。

于 2012-06-14T12:09:27.323 回答