Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Django-字典中传递的两个变量的For循环_Mysql_Django_Dictionary_For Loop - Fatal编程技术网

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 %}