Mysql Django-字典中传递的两个变量的For循环
在我的Mysql Django-字典中传递的两个变量的For循环,mysql,django,dictionary,for-loop,Mysql,Django,Dictionary,For Loop,在我的view.py文件中,我有两个查询,每个查询都分配了一个变量名。查询1收集reviews表中的所有评论。查询2从reviews表计算每个reviews的平均评分。两个查询,一个表 我已将查询1(名为评论)和查询2(名为评级)放在名为上下文的词典中,以传递到我的html文件 我的目标是显示每个评论以及该评论的评级。但是,我在使用当前方法正确显示它时遇到了问题。这是我的html文件: {% extends "reviews/layout.html" %} {% block content %}
view.py
文件中,我有两个查询,每个查询都分配了一个变量名。查询1收集reviews表中的所有评论。查询2从reviews表计算每个reviews的平均评分。两个查询,一个表
我已将查询1
(名为评论
)和查询2
(名为评级
)放在名为上下文
的词典中,以传递到我的html文件
我的目标是显示每个评论以及该评论的评级。但是,我在使用当前方法正确显示它时遇到了问题。这是我的html文件:
{% extends "reviews/layout.html" %}
{% block content %}
{% for review in reviews %}
{% for rating in ratings %}
<article class="media content-section">
<img class="rounded-circle article-img" src="{{ review.author.profile.image.url }}">
<div class="media-body">
<div class="article-metadata">
<h4 class="mr-2">{{ review.company }} {{ rating.rate }}</h4>
<small class="text-muted">{{ review.date_posted|date:"F d, Y" }}</small>
</div>
<h5><a class="article-title" href="{% url 'review-detail' review.id %}">{{ review.title }}</a></h5>
<p class="article-content">{{ review.content }}</p>
</div>
</article>
{% endfor %}
{% endfor %}
{% endblock content %}
相反,我的目标是看到:
Review 1, rating for review 1
Review 2, rating for review 2
Review 3, rating for review 3
Review 4, rating for review 4
...
我的view.py
文件:
def reviews(request):
reviews = Review.objects.all()
ratings = Review.objects.filter(id__in=[review.id for review in reviews]).annotate(rate=(F('value1')+F('value2')+F('value3')+F('value4'))/4)
context = {
'reviews': reviews,
'ratings': ratings
}
return render(request, 'reviews/reviews.html', context)
我用zip()
阅读过其他情况,但我认为这不适用于我的情况
我知道这是一个新手挑战,但我对Django是新手,我正在学习。欢迎所有建议。这可能只是个人偏好,但我喜欢合并相关上下文字段。 如果我正确理解了您的代码,那么您希望对所有评分进行审查,这可以通过编辑视图来实现
def someview(request):
reviews = Review.objects.all()
review_list = []
for review in reviews:
ratings = Rating.objects.filter(review=review)
ratings_list = []
for rating in ratings:
ratings_list.append({
'rating_value':rating.value
})
review_list.append({
'id':review.pk
'ratings':ratings_list,
})
context = {'reviews':review_list}
然后在html中,您可以执行以下操作,例如:
{% for review in reviews %}
{% for rating in review.ratings %}
Review {{review.id}}, rating is {{rating.value}}
{% endfor %}
{% endfor %}
谢谢你的帮助!我刚才误读了你的答案。它现在工作得很好。非常感谢你!!
{% for review in reviews %}
{% for rating in review.ratings %}
Review {{review.id}}, rating is {{rating.value}}
{% endfor %}
{% endfor %}