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只是确保其他阅读它的人知道你不能在模板中使用它。