Django模型latest()方法

问题描述 投票:6回答:2

我有以下问题(BTW我想我前一天没遇到过这个问题):

>>> 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
2个回答
8
投票

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

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

你可能想要的是首先过滤特定用户,然后通过'id'获得最新结果:

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

请参阅此处了解querying models上的文档


1
投票

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

替换以下行:

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

有:

rule = Rule.objects.filter(user=user).latest('id')
© www.soinside.com 2019 - 2024. All rights reserved.