Выберите первое изображение внешнего ключа изображения в шаблоне django
Я хочу выбрать первое изображение из набора свойств объекта. Я создал модель Property Model с внешним ключом к модели PropertyImages. Как мне получить доступ к первому изображению свойства object_set.all в шаблоне. Я не хочу делать это в функции представления, так как это должно быть в файле base.html.
код:
{% for property in properties %}
<div
style="background-image: url('{{property.propertyimages_set.all|first.url}}'); background-size: 100% 100%; "
;
class="tm-row-featured"
>
<div class="featured-content">
<p><span>Name: </span>{{property.property_name}}</p>
<hr>
<p><span>Type: </span>{{property.property_type}}</p>
<p><span>Price: </span>₦{{property.price}}</p>
<p><span>Location: </span>{{property.property_state}}</p>
<p><a href="{% url 'property_details' property.property_slug %}">More info
>>></a></p>
</div>
</div>
{% endfor %}
Вы можете использовать forloop.first для проверки того, выполняется ли цикл первым, а затем использовать соответствующий тег if для вывода изображения. Пожалуйста, посмотрите переменные, связанные с циклом for, по ссылке ниже:
Ref: https://docs.djangoproject.com/en/4.0/ref/templates/builtins/#for
{% if forloop.first %}
# Show first image here
{% endif %}
Попробуйте это:
<div style="background-image: url('{{properties.0.propertyimages_set.url}}'); background-size: 100% 100%;"; class="tm-row-featured">
<div class="featured-content">
<p><span>Name: </span>{{properties.0.property_name}}</p>
<hr>
<p><span>Type: </span>{{properties.0.property_type}}</p>
<p><span>Price: </span>₦{{properties.0.price}}</p>
<p><span>Location: </span>{{properties.0.property_state}}</p>
<p><a href="{% url 'property_details' properties.0.property_slug %}">More info >>></a></p>
</div>
</div>
Приведенные выше решения не сработали для меня. Я, наконец, нашел способ обойти решение таким образом:
{% for property in properties %}
<div
{% with property.propertyimages_set.all|first as photo %} style="background-image: url('{{photo.image.url}}'); background-size: 100% 100%; "
; {% endwith %}
class="tm-row-featured"
>
<div class="featured-content">
<p><span>Name: </span>{{property.property_name}}</p>
<hr>
<p><span>Type: </span>{{property.property_type}}</p>
<p><span>Price: </span>₦{{property.price}}</p>
<p><span>Location: </span>{{property.property_state}}</p>
<p><a href="{% url 'property_details' property.property_slug %}">More info >>></a></p>
</div>
</div>
{% endfor %}
</div>