django返回最近的记录日期

use*_*426 4 python django

我试图从用户的多个记录中返回最近的日期.

当用户创建文档时,创建的日期存储在CreatedDocumentDetails模型中.

我无法返回用户最近创建的文档的日期.

我问过这个问题,这个问题与这个问题有关.

这是我的model.py代码:

class CreatedDocumentDetails(models.Model):
    user = models.ForeignKey(User)
    created_document_timestamp = models.DateTimeField(auto_now_add=True, blank=True)

    def __unicode__(self):
        return unicode(self.user)
Run Code Online (Sandbox Code Playgroud)

这是我的views.py代码:

def get_latest_created_document_date(user):
    ??
    return latest_created_document_date
Run Code Online (Sandbox Code Playgroud)

我知道我必须在用户的get_latest_created_document_date视图的过滤器中传递日期,但在搜索了SO,Google和Django文档之后,我仍然无法自己解决这个问题.

小智 8

您将要使用order_byQuerySet过滤器,如下所示:

CreatedDocumentDetails.objects.order_by('-created_document_timestamp').first()
Run Code Online (Sandbox Code Playgroud)

由于您使用的是日期字段,因此您也可以像这样使用latest过滤器:

CreatedDocumentDetails.objects.latest('created_document_timestamp')
Run Code Online (Sandbox Code Playgroud)

正如catavaran在评论中指出的那样

请注意,如果表中没有记录,first()则会返回Nonelatest()会引发DoesNotExist异常

要获取日期戳,您可以将该字段追加到末尾,因为两个查询都将提供单个对象:

CreatedDocumentDetails.objects.order_by('-created_document_timestamp').first().created_document_timestamp 
Run Code Online (Sandbox Code Playgroud)

要么

CreatedDocumentDetails.objects.latest('created_document_timestamp').created_document_timestamp
Run Code Online (Sandbox Code Playgroud)

  • 注意,如果表中没有记录,那么`first()`将返回`None`但是`latest()`将引发`DoesNotExist`异常. (2认同)
  • Lego Stormtroopr,您对 CreatedDocumentDetails.objects.latest('created_document_timestamp') 的建议返回用户名。如何返回文档创建的最新日期? (2认同)
  • 它返回整个对象,我不确定它是如何给出用户名的.无论如何,我会更新答案. (2认同)