我有两个模型:Packages
和Images
。 Images
与Packages
有多对一的关系。 Images
表有一个外键package_id
。我必须显示country
的price
,Packages
属性以及与包相关的一个图像。可能有许多图像与单个包相关,但是,我必须只选择一个。
该表看起来像:
Packages
:
Images
:
我的代码如下:
views.朋友
def index(request):
featured = Package.objects.filter(featured=True).order_by('-pub_date')[:4]
featured_packages = []
for item in featured:
image = item.packageimages_set.all()[1]
data = {'package': item, 'image': image}
featured_packages.append(data)
context = {'featured': featured_packages}
return render(request, 'tours/index.html', context)
的index.html
{% for item in featured %}
<p>Country: {{item.package.country}}</p>
<p>Price: {{item.package.price}}</p>
<p>Image: <img src="{{item.image.url}}"></p>
{% endfor %}
一切似乎都很好我得到了URL。但是,我没有得到输出。输出如下所示:
我的错误在哪里?我无法显示图像。还有什么比这更有效率来完成上述任务了吗?
我试过这段代码:
featured_packages.append(data)
AttributeError:'dict'对象没有属性'data'
我实际上尝试了不同的东西,最终找到了这个解决方案。 Views.py:
def index(request):
packages = Package.objects.filter(featured=True).order_by('-pub_date')[:4]
featured_packages = []
for package in packages:
image = package.packageimages_set.all()[1]
data = {'package': package, 'image': image}
featured_packages.append(data)
return render(request, 'tours/index.html', {'featured_packages': featured_packages})
对Index.html稍作修改:
{% load static %}
{% load thumbnail %}
{% for item in featured_packages %}
{% thumbnail item.image.url "1170x480" crop="center" as im %}
<img src="{{im.url}}" width="{{im.width}}" height="{{im.height}}" alt>
{% endthumbnail%}
{% endfor %}
我不知道如何,但这实际上解决了我的问题。这是Screenshot。我得到一些加密的文件名,图片实际上正在加载。它是缩略图吗?我正在使用sorl.thumbnail或者我认为“加载静态”没有任何效果,因为我试图在没有它的情况下加载文件。它工作得很好。