Python Django和QuerySet中的一对多关系

Python Django和QuerySet中的一对多关系,python,django,Python,Django,我在餐馆和照片之间有一对多的关系。我无法显示相应餐厅的单个图像 现在所有的餐厅都是这样的: restaurants = Restaurant.objects.all() 在我的模板中,我有一个循环,它遍历餐厅并显示信息。但是,我不确定如何检索与餐厅关联的图像: {% for restaurant in restaurants %} {{restaurant.name}} {{restaurant.address}} {{CODE TO DISPLAY IMAGE}} ... {

我在餐馆和照片之间有一对多的关系。我无法显示相应餐厅的单个图像

现在所有的餐厅都是这样的:

restaurants = Restaurant.objects.all()
在我的模板中,我有一个循环,它遍历餐厅并显示信息。但是,我不确定如何检索与餐厅关联的图像:

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

如何检索与餐厅对应的第一张图像?我试过
餐厅.餐厅照片集.get.image
,但这只在只有一张图像时有效。

如果不知道您的模型是什么样子,就有点难以诊断,但您试过:

restaurant.restaurantphoto_set.all()
文档中有一些非常可靠的示例: 在模板中执行

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

这就是我最终解决问题的原因:

{% 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 %}
{%用于餐厅中的餐厅%}
{{餐厅名称}
{{餐厅.地址}
{%用于在restaurant.restaurantphoto_set.all%中拍照]
{%if-forloop.counter==1%}
{%endif%}
{%endfor%}
{%endfor%}

可以,但图像必须与餐厅相匹配。因此,在所有餐厅的餐厅照片旁边应该有餐厅名称;在它周围添加您想要的任何格式。您只想使用第一个并且仅使用第一个图像吗?您不需要for循环
restaurant.restaurantphoto_set.all.0
可能有效
restaurant.restaurantphoto_set.all.0.image
reallyOk,感谢您提供更清洁的解决方案。如果有机会,我会尝试这样做。这是在view.py中访问它们的方式,而不是在模板中。@warath coder这是方法的名称-只是在模板中调用它时的不同语法:我知道@MarkM只是确保其他阅读它的人知道你不能在模板中使用它。