【发布时间】:2020-11-26 20:59:40
【问题描述】:
请我使用 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)
我不知道,怎么弄出来的,我只是猜测在Vehicle表中创建另一个字段,并称之为thumbnail。
感谢您的帮助
【问题讨论】:
标签: django django-models foreign-keys django-orm