пожалуйста, я использую 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)
Я не знаю, как это понять , Я только предполагаю создать другое поле в таблице транспортных средств и назвать его эскиз .
Спасибо за любую помощь