【问题标题】: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')
      

      【讨论】:

      • 再次感谢!我只是好奇为什么get方法有问题?
      • @GregoryR,因为get method 返回一个模型实例,而不是一个 QuerySet 对象。 (不像filter 方法)。
      猜你喜欢
      • 1970-01-01
      • 2019-02-28
      • 2013-04-26
      • 2011-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多