我有两个查询集。我的第一个Queryset(服务)包含我的所有服务对象。我的第二个Queryset(rating_values)具有我的所有评级值,其中每个索引对应于服务Queryset中的索引。例如,服务[1]对应于rating_values [1]。
如何在django的html页面中循环这两个查询,以便我可以显示服务名称以及相应的评级值?
要明确,服务包含服务对象,rating_values包含十进制值。我传递了这样的变量:
return render_to_response('services/display_services.html', {'user': request.user, 'services':services, 'rating_values': rating_values })
我想做这样的事情:
{% for service in services %}
<p> {{service.service_name}} : {{ corresponding rating_value}} </p>
修改 这是我的服务模式:
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
这是我的评级模型:
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
答案 0 :(得分:3)
您可以在模型中建立正确的关系。
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
并获得相应的评分..
{% for service in services %}
<p> {{service.service_name}} : {{ service.rating.rating_average }} </p>
答案 1 :(得分:3)
也回答原来的问题。
如果由于某些原因不希望模型之间存在数据库关系,您可以将查询集转换为列表并在视图中压缩它们,将查询集转换为元组列表。
return render_to_response(
'services/display_services.html',
context_instance={
'user': request.user,
'services_and_ratings': zip(
services.all(),
rating_values.all()
)
}
)
{% for service, rating in services_and_ratings %}
<p> {{ service.service_name }} : {{ rating.rating_average }} </p>