我想过滤一个项目的_set,但是在下面的问题中,当我这样做时,它不在我认为的那个领域。我需要使用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,简单。
答案 0 :(得分:0)
怎么样:
story.rateA = Rating.objects.filter(rating=ratingA, post__story=story).count()
编辑:同样适用于帖子评分(相当于您的代码):
post.rateA = Rating.objects.filter(rating=ratingA, post=post).count()
计算指定帖子/故事的评分。