首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Django html中迭代2个查询集?

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

Stack Overflow用户
提问于 2014-12-20 02:19:38
回答 2查看 1.3K关注 0票数 1

我有两个问句。我的第一个Queryset (服务)包含我的所有服务对象。我的第二个查询集(rating_values)具有所有的评级值,其中每个索引对应于服务Queryset中的索引。例如,services1对应于rating_values1。

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

为了明确起见,服务包含服务对象,rating_values包含十进制值。我传递这样的变量:

代码语言:javascript
复制
return render_to_response('services/display_services.html', {'user': request.user, 'services':services, 'rating_values': rating_values  })

我想做这样的事情:

代码语言:javascript
复制
{% for service in services %} 
    <p> {{service.service_name}} : {{ corresponding rating_value}} </p>  

编辑这里是我的服务模型:

代码语言:javascript
复制
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

这是我的评级模型:

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-20 02:49:53

你可以在模型中建立关系。

代码语言:javascript
复制
class Rating(models.Model):
    service= models.OneToOneField(Service, primary_key=True)
    service_name= models.CharField(max_length=200)
    number_of_ratings = models.IntegerField()
    total_rating_value = models.IntegerField()
    rating_average = models.FloatField()
    ....

然后您可以通过services并获得相应的评分。

代码语言:javascript
复制
{% for service in services %} 
    <p> {{service.service_name}} : {{ service.rating.rating_average }} </p> 
票数 3
EN

Stack Overflow用户

发布于 2014-12-20 03:13:57

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

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

意见:

代码语言:javascript
复制
return render_to_response(
    'services/display_services.html',
    context_instance={
        'user': request.user,
        'services_and_ratings': zip(
            services.all(),
            rating_values.all()
        )
    }
)

模板:

代码语言:javascript
复制
{% for service, rating in services_and_ratings %} 
    <p> {{ service.service_name }} : {{ rating.rating_average }} </p> 
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27576351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档