我有一张照片列表,我想始终将它们作为第一个添加为个人资料照片。我在django文档中找到了以下“ |first”标记,但是每次尝试以这种方式添加标记时,我都会遇到这种情况,“ {{image_list | first.photo.url} }'我什么也没收到。
任何帮助将不胜感激。
我的模型。py
class Image(models.Model):
photo = models.ImageField()
added_at = models.DateTimeField(auto_now_add=True)
masseurs = models.ForeignKey(Masseurs, on_delete=models.CASCADE)
views.py
masseur = get_object_or_404(Masseurs, pk=masseurs_id)
image_list = Image.objects.filter(masseurs_id = masseurs_id)
return render(request, 'masseur/masseur_detail.html', {'image_list':image_list})
答案 0 :(得分:1)
由于image_list
是一个QuerySet而不是一个列表,因此|first
将不起作用。但是,您可以使用:
{{ image_list.first.photo.url }}
有关参考,请参见:Accessing Method Calls
大多数附加到对象的方法调用也可以从模板中获得。这意味着模板不仅可以访问类属性(例如字段名称),还可以访问从视图传入的变量。
答案 1 :(得分:1)
为什么不在视图中这样做?
image = Image.objects.filter(masseurs_id=masseurs_id).first()
但是如果您需要在模板中执行此操作:
{{ image_list.first.photo.url }}
这是因为image_list
是一个查询集,因此您可以使用.first()语法获取查询集的第一项