Django - 在 Django 3.1 中从国外获取第一张图片 table

Django - Get First image from Foreign related table in Django 3.1

请问我使用的是 Django 3.1,我正在尝试弄清楚如何从外国获取一张图片 table - 在家庭视图中 - 应该有包含所有车辆的卡片,并且每个卡片只有第一张图片一个 - 作为缩略图。

这是我的 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)

我不知道,如何解决这个问题,我只是想在 Vehicle table 中创建另一个字段,并将其命名为 thumbnail.

感谢您的帮助

有效,我只是在限制时犯了一个错误:

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

我很抱歉