Я пытался отобразить в своем шаблоне изображение, которое хранится в моей модели. но я не могу. Может кто-нибудь, пожалуйста, скажите мне, что я делаю неправильно?
Заранее спасибо.
модель.ру:
class DeviceType(models.Model):
type_name = models.CharField(primary_key=True, max_length=64, unique=True)
type_description = models.TextField(max_length=512, blank=True)
def __str__(self):
return self.type_name
def get_absolute_url(self):
return reverse("devices:type-detail", kwargs = {"pk": self.pk})
class DeviceTypeImage(models.Model):
image_status = IntegerField(unique=True)
image = models.ImageField(upload_to='images/types/')
image_device_type = models.ForeignKey(DeviceType, on_delete=models.CASCADE, related_name='image')
def __str__(self):
return str(self.image_status)
def get_absolute_url(self):
return reverse("devices:type-detail", kwargs = {"pk": self.pk})
вид.py:
class DeviceTypeDetailView(DetailView):
template_name = 'devices/type-detail.html'
model = DeviceType
def get_object(self):
return get_object_or_404(DeviceType, pk=self.kwargs.get("pk"))
шаблон:
<h1>Type detail</h1>
{{ object.type_name }}<br>
{{ object.type_description }}<br>
{{ object.image_status }}<br>
{{ object.image_device_type }}
<img src = "{{ object.image.url }}" alt = "...">
URL.py:
urlpatterns = [
....
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
И как я могу получить доступ к своему изображению в шаблоне? не осуществляется ли автоматический доступ к модели DeviceTypeImage при вызове get_object_or_404(DeviceType, pk=self.kwargs.get("pk"))?
ну, так как это ForeignKey
, изображения нет: у DeviceType
может быть ноль, одна или несколько связанных DeviceTypeImage
s.
object
это DeviceType
, а не DeviceTypeImage
. Кроме того, DeviceType
может иметь несколько DeviceTypeImage
, поэтому object.image
является менеджером DeviceTypeImage
: он может переносить ноль, одно или несколько изображений.
Таким образом, вы получаете доступ к изображениям с помощью:
{{ object.type_name }}<br>
{{ object.type_description }}<br>
{% for image in object.image.all %}
{{ image.image_status }}
<img src = "{{ image.image.url }}">
{% endfor %}
object
этоDeviceType
, а неDeviceTypeImage
.