Django和QuerySet中的一对多关系

时间:2015-01-20 21:14:32

标签: python django

我在餐馆和照片之间有一对多的关系。我在为相应的餐厅显示单个图像时遇到问题。

现在,我得到了所有这样的餐厅:

restaurants = Restaurant.objects.all()

在我的模板中,我有一个遍历餐馆并显示信息的循环。但是,我不确定如何检索与餐厅相关的图像:

{% for restaurant in restaurants %}
  {{restaurant.name}}
  {{restaurant.address}}
  {{CODE TO DISPLAY IMAGE}}
  ...
{% endfor %}

如何检索与餐厅对应的第一张图片?我尝试了restaurant.restaurantphoto_set.get.image,但只有在有一张图片时才有效。

3 个答案:

答案 0 :(得分:1)

在不知道你的模型是什么样的情况下进行诊断有点难,但是你试过了吗?

restaurant.restaurantphoto_set.all()

这里的文档有一些非常可靠的例子: https://docs.djangoproject.com/en/1.7/topics/db/examples/many_to_one/

答案 1 :(得分:1)

在您的模板中执行

{% for photo in restaurant.restaurantphoto_set.all %}
  {{ photo.image }}
{% endfor %}

答案 2 :(得分:0)

这就是我最终解决问题的方法:

{% for restaurant in restaurants %}

  {{restaurant.name}}
  {{restaurant.address}}

  {% for photo in restaurant.restaurantphoto_set.all %}
    {% if forloop.counter == 1 %} 
      <img src= "{% static photo.image %}" class="img-curved"> 
    {% endif %} 
  {% endfor %}

{% endfor %}