Доступ к образу внешнего ключа в шаблоне

#python #django

#питон #django

Вопрос:

У меня есть следующие модели:

 class Car(models.Model):
    # some fields

class CarPhotos(models.Model):
    image = models.ImageField(upload_to='somewhere')
    car = models.ForeignKey(Car)
 

в views.py:

 def car_list(request):
    cars = Car.objects.all()
    return render(request, 'borsa/car_list.html', {'cars': cars})
 

в car_list.html:

  {% for car in cars %}
    <a href="car/{{ car.pk }}/view/">
      <img class="media-object tmbpic" src="{{ car.carphotos_set.all.0.image.url }}" alt="kola">
    </a>
 

Первый метод, который я использовал, заключался в использовании встроенных наборов форм, но я понятия не имел, как получить доступ к изображениям. Не могли бы вы, пожалуйста, указать мне правильное направление того, как получить доступ к изображениям в соответствии с автомобильными объектами? Я имею в виду, что у каждого автомобиля должно быть несколько изображений, и мне нужно отобразить только первое из них в виде списка, но затем мне нужно отобразить их все в подробном виде.

Комментарии:

1. Похоже, это именно то, что вы сделали. В чем, собственно, проблема?

2. И я не знаю, какое отношение это имеет к наборам форм — вы их здесь не используете, и я не могу себе представить, почему они будут актуальны.

3. Проблема в том, что я не могу получить доступ ко всем изображениям, поскольку я загружаю несколько изображений на экземпляр. Я уже упоминал, что использовал встроенные наборы форм для добавления нескольких изображений в область администрирования. Я совершенно сбит с толку, поскольку несколько раз менял свой код.

Ответ №1:

Чтобы отобразить их все, вам нужно сделать что-то вроде:

 {% for car in cars %}
    {% for photo in car.carphotos_set.all %}
       <img src="{{ photo.image.url }}">
    {% endfor %}
{% endfor %}
 

Итак, перебирайте автомобили, затем перебирайте изображения для каждого автомобиля.