简介:假设我正在制作一个应用程序,其中根据用户撰写的帖子类型对其进行了评分,我有一个用户个人资料页面。如果您进入用户个人资料页面,则可以看到他们撰写的所有帖子,并且可以看到其总体评分。我下面的代码可以毫无错误地实现这一目标。
该评论不适用于该帖子,而是针对撰写该帖子的人员。他们得到其他参数的评论。示例发布我的美国小姐Jane Doe
和Universe小姐发布。 Meg Ryan
《邮报》的作者在其他地方也获得了评分。哪个不是这个问题的一部分
示例:个人资料页
Samir T's Profile
Rating: 8.0
See Samir T's posts below
问题:用户进入首页时。兼作PostList页面。网站访问者将看到来自不同用户的所有帖子,我希望访问者看到帖子作者的评分,而不是N/A on 10
示例:主页(帖子列表视图)
Post 1
Author Samir T Rating: 8.0 /10 #intead they see N/A on 10
Post 2
Author John Doe Rating: 7.5 /10 #intead they see N/A on 10
我的评论 Models.py 的工作代码(显示用户个人资料页面)
class Review (models.Model):
review_from = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, related_name='review_from')
review_for = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, related_name='review_for')
def average_rating(self):
counter = 0
total_ratings = 0
for item in Review.objects.filter(review_for=self.review_for):
counter += 1
total_ratings += int(item.ratings)
user_rating = total_ratings / counter
return user_rating
个人资料 views.py
def get_context_data(self, **kwargs):
context['review_list'] = Review.objects.filter(review_for__username__iexact=self.kwargs.get('username'))
return context
模板
strong>{{post.user.first_name}} {{post.user.last_name}}</a></strong>
{% if review_list %}
Rating: {% for review in review_list|slice:":1" %}
{{ review.average_rating }} / 10 {% endfor %}
{% else %}
N/A on 10
{% endif %}
上面所有的有效代码都可以在其个人资料页面上显示用户的评分(评论)。现在,下面是我尝试在主页(帖子列表)中进行的尝试
下面是我的帖子模型。py
class Post(models.Model):
user = models.ForeignKey(User, related_name='posts')
title = models.CharField(max_length=250, unique=True)
message = models.TextField()
def user_rating(self):
counter = 0
total_ratings = 0
for item in Review.objects.filter(review_for=self.user.username):
counter += 1
total_ratings += int(item.ratings)
user_rating = total_ratings / counter
return user_rating
以下是我的帖子列表视图
def get_context_data(self, **kwargs):
context['review_list'] = Review.objects.filter(review_for__username__iexact=self.kwargs.get('username'))
return context
下面是帖子列表的模板
strong>{{post.user.first_name}} {{post.user.last_name}}</a></strong>
{% if review_list %}
Rating: {% for review in review_list|slice:":1" %}
{{ review.average_rating }} / 10 {% endfor %}
{% else %}
N/A on 10
{% endif %}
显示以下错误
Post 1
Author Samir T Rating: N/A on 10
Post 2
Author John Doe Rating: N/A on 10