Как в Django вывести несколько изображений в посте?
Подскажите, пожалуйста, как в Django вывести несколько изображений в одном посте. Как вывести одно изображение понятно и как экземпляру класса Post привязать несколько изображений тоже. Но как вывести несколько изображений в шаблоне не могу понять, т.к. у меня только одно поле (body) с телом поста, между строчками, которого нужно вставлять изображения.
models.py
class Post(models.Model):
title = models.CharField(max_length=150, db_index=True)
slug = models.SlugField(max_length=150, blank=True, unique=True)
body = models.TextField(blank=True, db_index=True)
tags = models.ManyToManyField('Tag', blank=True, related_name='posts')
date_pub = models.DateTimeField(auto_now_add=True)
image_preview = models.ImageField(upload_to='images/')
********
class Images(models.Model):
post = models.ForeignKey(Post, default=None, on_delete=models.CASCADE)
image = models.ImageField(upload_to='images/')
post.html
{% block content %}
<h1 class="mt-5">
{{ post.title }}
</h1>
{% if post.image_preview %}
<img src="{{ post.image_preview.url }}">
{% endif %}
<p>
{{ post.body|safe }}
</p>
{% endblock %}
Ответы (1 шт):
По итогу:
Вставлять изображения в 'body' можно просто с помощью ссылок на эти изображения (к примеру <img src="/media/2020-06-09/a68eb19.jpg">).
Получить связанные изображения с экземпляром класса 'Post' с помощью:
Post.objects.get(title='some_post').images_set.all()
При создании/изменении поста в поле 'body' устанавливаем метки в тех местах, где хотим что-бы были изображения, и в модели создаем метод, который при сохранении поста заменит наши метки на ссылки на изображения.
А можно воспользоваться прекрасным редактором django-summernote, который с легкостью справиться с данной задачей, избавит нас от 'кучи' кода, и вдобавок даст множество возможностей для редактирования теста.
