我有一个名为TemplateImages
的模型类,它保存对媒体文件夹中图像的引用。
我想在html文件中循环显示图像。
这是我的models.py代码:
class TemplateImages(models.Model):
image = models.ImageField(upload_to='template_images') # template_images/en/chronological/en-chronological-resume-1.png.
type = models.CharField(max_length=40) # e.g. chronological, functional, combination, coverletter
language_code = models.CharField(max_length=7, choices=languages.LANGUAGE_CHOICES, default='en') # en.
def __str__(self):
return '{}'.format(self.image)
这是我的views.py代码:
def templates(request):
...
language_pref = request.user.userprofile.language_preference
chronological_images = core_models.TemplateImages('chronological', 'en')
...
return render(request, 'templates/templates.html', {
...
'chronological_images': chronological_images,
...
})
这是我的数据库的屏幕截图:
在我的html页面上,我放置了以下django for循环以在页面上显示25张图像:
{% for c_image in chronological_images %}
{{c_image.image|file_url|safe}}"
{% endfor %}
我收到以下错误消息:
'TemplateImage' object is not iterable
我已经搜索过google,但是找不到任何有用的示例。
有人可以解释我做错了吗?
答案 0 :(得分:3)
您只是构造了一个TemplateImages
对象,而不是运行查询。试试这个:
chronological_images = TemplateImages.objects.filter(
type='chronological',
language_code='en',
)
答案 1 :(得分:1)
您只构造了一个没有保存到数据库的 new TemplateImages
对象,当然,单个对象是 not 不可迭代的。如果要执行查询,则应使用TemplateImages.objects.filter()
,例如:
def templates(request):
# ...
language_pref = request.user.userprofile.language_preference
chronological_images = core_models.TemplateImages.objects.filter(
type='chronological',
language_code='en'
)
# ...
return render(request, 'templates/templates.html', {
# ...
'chronological_images': chronological_images,
# ...
})