我遇到了以下问题(顺便说一句,我想我前一天没遇到过这个问题):
>>> rule = Rule.objects.get(user=user)
>>> rule.id
1
>>> rule = Rule.objects.get(user=user).latest('id')
AttributeError: 'Rule' object has no attribute 'latest'
为什么我收到错误?
答案 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')