Django - Получить первое изображение из таблицы, связанной с внешним миром в Django 3.1 - PullRequest
0 голосов
/ 06 августа 2020

пожалуйста, я использую Django 3.1, и я пытаюсь выяснить, как получить одно изображение из чужой таблицы - в домашнем виде - должны быть карточки со всеми транспортными средствами и только первое изображение для каждого из них - как эскиз.

Вот мой models.py:

class Vehicle(models.Model):
    make = models.ForeignKey(Make, on_delete=models.PROTECT)
    model = models.ForeignKey(Model, on_delete=models.PROTECT)
    year = models.PositiveSmallIntegerField()
    ...

    def first_image(self):
       return self.image_set.first()

class Image(models.Model):
    vehicle = models.ForeignKey(Vehicle, on_delete=models.PROTECT)
    image = models.ImageField(upload_to='images/')

В моем шаблоне я пытаюсь получить первое изображение Транспортного средства по:

{% for v in vehicles %}
   <img src="{{ v.first_image.image.url }}" alt="">
{% endfor %}

Я также пробовал {{v.first_image.url}} , но ничего не работает. Я попытался добавить функцию печати к first_image (так же, как return - self.image_set.first ()), и он получает None или catalog.Image.None

Когда я печатаю все изображения для одного автомобиля, он отлично работает через:

{% for i in images %}
   <img src="{{ i.image.url }}" alt="">
{% endfor %}

views.py:

from django.shortcuts import render
from .models import Vehicle, Image


def home_view(request):
    vehicles = Vehicle.objects.all()
    context = {
        'vehicles': vehicles,
    }
    print(context)
    return render(request, 'home.html', context)

def vehicle_detail_view(request, slug_make, slug_model, slug_vehicle):
    vehicle = Vehicle.objects.get(
        make__slug=slug_make, model__slug=slug_model, slug=slug_vehicle)
    images = Image.objects.filter(vehicle=vehicle)
    context = {
        'vehicle': vehicle,
        'images': images
    }
    return render(request, 'vehicle_detail.html', context)

Я не знаю, как это понять , Я только предполагаю создать другое поле в таблице транспортных средств и назвать его эскиз .

Спасибо за любую помощь

1 Ответ

0 голосов
/ 06 августа 2020

Работает, только что ошибся, когда ограничивал:

def home_view(request):
    vehicles = Vehicle.objects.all()[:1]

Прошу прощения

...