【问题标题】:Django model latest() methodDjango 模型 latest() 方法
【发布时间】:2014-01-12 17:28:16
【问题描述】:
我遇到了以下问题(顺便说一句,我想我前一天没有遇到过这个问题):
>>> rule = Rule.objects.get(user=user)
>>> rule.id
1
>>> rule = Rule.objects.get(user=user).latest('id')
AttributeError: 'Rule' object has no attribute 'latest'
为什么我会收到错误消息?
【问题讨论】:
标签:
python
django
django-models
django-queryset
【解决方案1】:
模型管理器的 get() 函数返回模型本身的一个实例。
你提到的 latest() 函数属于 QuerySet 类。调用 .filter()、.all()、.exclude() 等,都返回一个 QuerySet。
您可能要寻找的是首先过滤特定用户,然后通过 'id' 获取最新结果:
rule = Rule.objects.filter(user=user).latest('id')
在此处查看querying models 上的文档
【解决方案2】:
latest method 属于 QuerySet,而不是模型。
替换以下行:
rule = Rule.objects.get(user=user).latest('id')
与:
rule = Rule.objects.filter(user=user).latest('id')
【讨论】:
-
-
@GregoryR,因为get method 返回一个模型实例,而不是一个 QuerySet 对象。 (不像filter 方法)。