我有 2 个问题,但它们与同一主题相关。
我知道如何使用模板标签从 for 循环
中检索数据
{% for status in status %}
<tr>
<td>{{ status.status}}</td>
</tr>
{% endfor %}
但是,当我想检索单个对象时,即使我使用了也会出现错误:
po = Status.objects.latest('id')
并移除 for 循环。
我得到:
'Status' object is not iterable
我的问题是:
- 如何从数据库中获取给定模型的最新条目?
- 如何设置我的模板标签以只允许一条记录?
最佳答案
这里有两个不同的问题:
- 如何从数据库中检索最新的对象。
您可以使用 latest()
执行此操作查询集运算符。通过阅读文档,您会注意到此运算符适用于日期字段,而不适用于整数。
Status.objects.latest('date_added') # or date_updated
如果您想通过 ID 执行此操作,则需要按 ID 排序并选择第一个结果。 (这仅在您使用递增主键时有效,不适用于 UUID 或随机生成的哈希)。
Status.objects.order_by('id')[0]
旁注:我个人会使用 date_added/date_updated
方式来执行此操作。
- 遍历单个对象
不能迭代单个对象。为此,您需要使用不同的模板。或者,您需要将单个对象添加到列表中。
# note the [] around the query
result = [Status.object.latest('date_added')]
我个人对列出单个/多个结果有不同的看法。我有一个用于许多结果对象的 ListView
和一个用于单个对象的 DetailView
。
关于python - Django 从数据库中获取最新条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31070368/