在 Django html 中迭代 2 个查询集?

Mic*_*ith 1 python django

我有两个查询集。我的第一个查询集(服务)包含我的所有服务对象。我的第二个查询集 ( rating_values) 包含我的所有评级值,其中每个索引对应于服务查询集中的索引。例如 services[1] 对应 rating_values[1]。

如何在 django 的 html 页面中循环执行这两个查询,以便可以显示服务名称以及相应的评级值?

需要明确的是,services 包含服务对象,而 rating_values 包含十进制值。我这样传递变量:

return render_to_response('services/display_services.html', {'user': request.user, 'services':services, 'rating_values': rating_values  })
Run Code Online (Sandbox Code Playgroud)

我想做这样的事情:

{% for service in services %} 
    <p> {{service.service_name}} : {{ corresponding rating_value}} </p>  
Run Code Online (Sandbox Code Playgroud)

编辑 这是我的服务模型:

class Service(models.Model):
    user_id= models.IntegerField(default=1)
    service_name = models.CharField(max_length=100)
    address = models.CharField(max_length=200)
    def __str__(self):              # __unicode__ on Python 2
        return self.service_name
Run Code Online (Sandbox Code Playgroud)

这是我的评级模型:

class Rating(models.Model):
    service_id= models.IntegerField(default=1)
    service_name= models.CharField(max_length=200)
    number_of_ratings = models.IntegerField()
    total_rating_value = models.IntegerField()
    rating_average = models.FloatField()
    def __str__(self):              # __unicode__ on Python 2
        return self.service_name
Run Code Online (Sandbox Code Playgroud)

Håk*_*Lid 5

只是为了回答原来的问题。

如果出于某种原因您不希望模型之间存在数据库关系,则可以将查询集转换为列表并将它们压缩到视图中,从而将查询集转换为元组列表。

看法:

return render_to_response(
    'services/display_services.html',
    context_instance={
        'user': request.user,
        'services_and_ratings': zip(
            services.all(),
            rating_values.all()
        )
    }
)
Run Code Online (Sandbox Code Playgroud)

模板:

{% for service, rating in services_and_ratings %} 
    <p> {{ service.service_name }} : {{ rating.rating_average }} </p> 
Run Code Online (Sandbox Code Playgroud)