Как передать изображение объекта, связанное внешним ключом, в шаблон? - PullRequest
0 голосов
/ 08 октября 2019

У меня проблемы с получением URL-адресов для изображений, прикрепленных к объектам модели автомобиля в моем проекте Django.

Цель состоит в том, чтобы извлечь одно изображение из загруженного набора (возможно, с помощью pk или первого загруженного) для использования в качестве миниатюры в представлении списка.

Я загрузил изображения через администратора, но я не могу получить ни одного из шаблона.

Я пытался использовать <img src="{{ car.image.url }}"> (что и работало, когдамое поле изображения было частью модели автомобиля).

Если посмотреть на шаблон в визуализированном шаблоне, это просто alt-текст. Просмотр инструментов разработчика показывает src(unknown)

models.py


class Car(models.Model):
    manufacturer = models.ForeignKey('Manufacturer', on_delete=models.SET_NULL, null=True)
    car_model = models.CharField('Model', max_length=50, null=True)
    description = models.TextField(max_length=4000)
    vin = models.CharField('VIN', max_length=17, help_text='Enter the 17 character VIN number.', blank=True, null=True)
    mileage = models.IntegerField(verbose_name='Mileage')
    date_added = models.DateTimeField(auto_now_add=True)
    engine_displacement = models.CharField(default=2.0, max_length=3, help_text="Engine displacement in Liters (E.g. 2.0, 4.2, 6.3)")
    price = models.IntegerField(default=0)

    seller = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True)

    id = models.UUIDField(primary_key=True, default=uuid.uuid4,
    help_text="Unique ID for this car")
...

class Image(models.Model):
    car = models.ForeignKey(Car, on_delete=models.SET_NULL, null=True)
    image = models.ImageField(upload_to=image_directory_path)

Визуализация шаблона

 {% for car in most_recently_uploaded %}
                            <div class="col-xs-3 product-item" style="width:400px">
                                <figure class="figure"></figure>
                                    <a href="{{ car.get_absolute_url }}"><img src="{{ car.image.url }}" class="figure-img img-fluid" alt="{{ car.manufacturer }} {{ car.car_model }} image" ></a>
                                    <figcaption class="figure-caption"><a href="{{ car.get_absolute_url }}" class="btn btn-link"><strong>{{ car.model_year }} {{ car.manufacturer }} {{ car.car_model }}</strong></a></figcaption>
                                </figure>
                            </div>
                        {% endfor %}     

1 Ответ

1 голос
/ 08 октября 2019

Вам не нужно передавать его в шаблон. Доступ к нему осуществляется через обратный внешний ключ.

<img src="{{ car.image_set.first.image.url }}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...