she*_*sky 0 django django-templates django-models django-views
我正在使用 Django 1.5.1。我的第一页顶部有一个 ImageModel。
如何仅显示此模型的最后一个条目?
#model.py
class Vitrin(models.Model):
title = models.CharField(max_length=200)
image = models.ImageField(upload_to = 'images/vitrin/')
date_created = models.DateTimeField(auto_now=True)
#views.py
def index(request):
categories = Category.objects.all()[:5]
pages = Page.objects.all()[:5]
vitrins = Vitrin.objects.all().reverse()[0]
return render(request, 'gallery/index.html', {'categories': categories, 'pages':pages, 'vitrins': vitrins})
#index.html
<div class='vitrin'>
{% for vitrin in vitrins %}
<img src="{{ vitrin.image.url|last }}" height="550">
{% endfor %}
</div>
Run Code Online (Sandbox Code Playgroud)
但我收到错误:“Vitrin”对象不可迭代
Request Method: GET
Request URL: http://localhost:8000/
Django Version: 1.5.1
Exception Type: TypeError
Exception Value:
'Vitrin' object is not iterable
Exception Location: /usr/local/lib/python2.7/dist-packages/django/template/defaulttags.py in render, line 147
Run Code Online (Sandbox Code Playgroud)
您还可以实施latest():
Image.objects.latest()
Image.objects.latest('attr')
Run Code Online (Sandbox Code Playgroud)
在模板中
{{ object_list.latest }}
Run Code Online (Sandbox Code Playgroud)
您可以通过向模型Meta类添加属性来实现它:
class Image(models.Model):
date_created = models.DateTimeField(auto_now=True)
# other attrs
class Meta:
app_label = '<app_name>'
get_latest_by = 'date_created'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1209 次 |
| 最近记录: |