在具有基于类的视图的模板中显示ForeignKey

时间:2019-12-04 12:37:45

标签: django django-templates

我有一个基于DetailView的类,其模型为Property作为主要模型。该模型与我存储一些图像的模型PropertyImage有外键关系。我想在模板PropertyImages中显示detail_view.html的所有相关图像以及Property的一些细节。我知道如何在基于函数的视图中进行操作,我尝试了很多事情,但我一直都失败了。也许这只是一些小事情,但我无法使其正常工作。

这是我的代码:

# models.py

from django.db import models


class Property(models.Model):
    title = models.CharField(max_length=140, default="Title",)
    description = models.TextField(max_length=2000)
    # ... and some more fields

    def __str__(self):
        return self.title

class PropertyImage(models.Model):
    property = models.ForeignKey(Property, on_delete=models.CASCADE, related_name='images')
    image = models.ImageField(upload_to='images/')
    figcaption = models.CharField(max_length=160)

    def __str__(self):
        return self.figcaption[:50]
# views.py

from django.views.generic import DetailView

from .models import Property


class PropertyDetailView(DetailView):
    model = Property
    template_name = 'property_detail.html'

要进行更快的评估,请查看<!-- Here I'm stuck -->部分:

<!-- property_detail.html -->

{% extends 'base.html' %}

{% block content %}
    <div class="container">
        <div class="property-entry">
            <img src="{{ property.cover_image.url }}" alt="{{ property.title }}" class="img-fluid">
            <h2>{{ property.title }}</h2>
            <p>Description: {{ property.description }}</p>

            <!-- Here I'm stuck -->
            {% for image in property.propertyimage_set.all %}
            <img src="{{ image.image.url }}">
            <p>{{ image.figcaption }}</p>
            {% endfor %}
        </div>
    </div>


{% endblock content %}

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

由于您related_name=…ForeignKey的{​​{1}}设置为Property,因此要反向访问图像,它就是related_name='images'

property.images.all