Django模型latest()方法

时间:2014-01-12 17:28:16

标签: python django django-models django-queryset

我遇到了以下问题(顺便说一句,我想我前一天没遇到过这个问题):

>>> rule = Rule.objects.get(user=user)
>>> rule.id
1
>>> rule = Rule.objects.get(user=user).latest('id')

AttributeError: 'Rule' object has no attribute 'latest'

为什么我收到错误?

2 个答案:

答案 0 :(得分:8)

Model Manager的get()函数返回Model本身的实例。

您提到的latest()函数属于QuerySet类。调用.filter(),. all(),. exclude()等都会返回一个QuerySet。

您可能想要的是先为特定用户过滤,然后按'id'获取最新结果:

rule = Rule.objects.filter(user=user).latest('id')

请参阅此处了解querying models

上的文档

答案 1 :(得分:1)

latest method属于QuerySet,不属于模特。

替换以下行:

rule = Rule.objects.get(user=user).latest('id')

使用:

rule = Rule.objects.filter(user=user).latest('id')