python - Django 从数据库中获取最新条目

标签 python django django-models

我有 2 个问题,但它们与同一主题相关。

我知道如何使用模板标签从 for 循环 中检索数据

{% for status in status %}

    <tr>
        <td>{{ status.status}}</td>
    </tr>

{% endfor %}

但是,当我想检索单个对象时,即使我使用了也会出现错误:

po = Status.objects.latest('id')

并移除 for 循环。

我得到:

'Status' object is not iterable

我的问题是:

  1. 如何从数据库中获取给定模型的最新条目?
  2. 如何设置我的模板标签以只允许一条记录?

最佳答案

这里有两个不同的问题:

  1. 如何从数据库中检索最新的对象。

您可以使用 latest() 执行此操作查询集运算符。通过阅读文档,您会注意到此运算符适用于日期字段,而不适用于整数。

Status.objects.latest('date_added') # or date_updated

如果您想通过 ID 执行此操作,则需要按 ID 排序并选择第一个结果。 (这仅在您使用递增主键时有效,不适用于 UUID 或随机生成的哈希)。

Status.objects.order_by('id')[0]

旁注:我个人会使用 date_added/date_updated 方式来执行此操作。

  1. 遍历单个对象

不能迭代单个对象。为此,您需要使用不同的模板。或者,您需要将单个对象添加到列表中。

# note the [] around the query
result = [Status.object.latest('date_added')]

我个人对列出单个/多个结果有不同的看法。我有一个用于许多结果对象的 ListView 和一个用于单个对象的 DetailView

关于python - Django 从数据库中获取最新条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31070368/

相关文章:

python - 基于同一模型中其他字段的django字段验证器

python - 测试 Django 中外键的重复条目 '1'

python - Django - 覆盖模型的保存/删除功能与在 View 中执行

python - 为什么变量不循环上传?

python - Pysolar 结果的差异

python - 当用户想要更新他的信息时如何将数据提取到表单中? Django

Django:扩展用户模型的问题

Python:Python 中的互联网内容适配协议(protocol) (ICAP) 客户端实现

python - 通过 matplotlib 图表绘制 pandas 数据框并在图表上绘制点

django - 如何在gunicorn服务器下配置django日志记录以进行生产?