Рендеринг контекстных данных шаблона с ссылкой на жестко закодированный HTML в модели Django

У меня есть приложение Django, которое является службой новостей. У меня есть базовая html страница, которая отображает одну статью. До сих пор каждая статья имела стандартный формат, изображение, автор и текстовое содержание. Сейчас я делаю обновление, чтобы позволить статьям иметь несколько изображений между различными абзацами текста статьи.

В настоящее время моя HTML-страница для отображения одной статьи получает свои данные через контекстный объект, который содержит следующую модель статьи:

class Article(models.Model):
    title = models.TextField()
    author = models.ForeignKey(Author, on_delete=models.CASCADE)
    content = models.TextField()
    date = models.DateField(default=now)
    image = models.ImageField(storage=MediaStorage(), default='')
    external_source = models.TextField(null=True, blank=True)
    featured = models.BooleanField(null=False, blank=True)
    slug = models.SlugField()
    album = models.OneToOneField(Album, related_name='album', on_delete=models.CASCADE, null=True, blank=True)

В шаблоне HTML я отображаю содержимое со следующим кодом

<p>
    {{ article.content|safe }}
</p>

Поскольку я хочу встроить изображения альбомов в текст, я пытаюсь поместить HTML-код в текстовое поле содержимого, как показано ниже:

Some random article text followed by and image...
<img class="img-responsive single_article_image" src="{{album.image.url}}">
Some more random article text

Проблема в том, что ссылка src на album.image не разрешается из инжектированного контекста, и изображение не отображается. Причина, по которой я не могу жестко закодировать класс img в шаблоне, заключается в том, что тогда нет возможности отображать изображения между текстовыми абзацами статьи.

Объектом в контексте является Article, поэтому вы всегда должны начинать с него. Как вы делали с рендерингом содержимого:

{{ article.content|safe }}

вы должны сделать с рендерингом связанный Album объект:

{{ article.album.image.url }}
Вернуться на верх