• Как выгружать изображения на сайт. Django?

    igor_shevchenko
    @igor_shevchenko
    Веб-разработчик
    ForeignKey — это отношение много-к-одному. Вы можете создать много изображений, поместив им в поле post одну и ту же новость.

    Поэтому post.image — это не само изображение, а менеджер, который возвращает все изображения для этой новости. Иными словами, post.image вернет то же самое, что и Images.objects.filter(post=post). Поправить это можно несколькими способами.

    Если вы хотите, чтобы всё просто заработало без значительных изменений:

    <img src="{{ new.image.first().url }}">

    Если у новости действительно может быть много изображений
    {% for image in new.image.all %}
         <img src="{{ image.image.url }}">
    {% endfor %}


    Если у новости может быть только одно изображение:

    class Images(models.Model):
        post = models.OneToOneField(News, default=None, related_name="image")
        image = models.ImageField(upload_to=settings.MEDIA_ROOT,
                                  verbose_name="Image")


    OneToOneField — это отношение один-к-одному. В этом случае post.image уже будет сразу возвращать изображение.
    Ответ написан