Django return 计算存储日期 <= 最后 24 小时
Django return count when date stored <= last 24 hours
我是菜鸟,这么简单的问题,却把我难住了。
我正在创建一个测试表单,以便每次用户创建文档时,文档创建的日期和时间都将存储在 CreatedDocumentDetails 模型中。我还没有实现这段代码,我正在关注 return 过去 24 小时内的计数。我暂时手动将值插入到 CreatedDocumentDetails 模型中。
问题是我想统计用户在过去 24 小时内创建的文档。 我可以 return 总数用户保存的文档数,但我不确定如何将现在的日期和时间字段写入 if 语句以 return 过去 24 小时内创建的文档数。
我有以下型号:
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)
这里是相关的views.py代码:
def get_created_documents(user):
created_documents = len(CreatedDocumentDetails.objects.filter(user=user))
return created_documents
我假设我以某种方式将 now datetime 字段插入到上面 get_created_documents 查看代码的过滤器中。
首先,您现有的代码是错误的。您永远不应该对不需要迭代的查询集执行 len
:它会无缘无故地获取所有数据。相反,使用 count()
:
created_documents = CreatedDocumentDetails.objects.filter(user=user).count()
其次,既然你已经有一个条件——关于用户——添加另一个应该不会太难。你只需要一个日期比较:
date_from = datetime.datetime.now() - datetime.timedelta(days=1)
created_documents = CreatedDocumentDetails.objects.filter(
user=user, created_document_timestamp__gte=date_from).count()
您还可以考虑重命名您的函数及其变量:您实际上并没有获得创建的文档,而是在计算它们,因此 count_created_documents
或 get_created_documents_count
会是更好的名称。
我是菜鸟,这么简单的问题,却把我难住了。
我正在创建一个测试表单,以便每次用户创建文档时,文档创建的日期和时间都将存储在 CreatedDocumentDetails 模型中。我还没有实现这段代码,我正在关注 return 过去 24 小时内的计数。我暂时手动将值插入到 CreatedDocumentDetails 模型中。
问题是我想统计用户在过去 24 小时内创建的文档。 我可以 return 总数用户保存的文档数,但我不确定如何将现在的日期和时间字段写入 if 语句以 return 过去 24 小时内创建的文档数。
我有以下型号:
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)
这里是相关的views.py代码:
def get_created_documents(user):
created_documents = len(CreatedDocumentDetails.objects.filter(user=user))
return created_documents
我假设我以某种方式将 now datetime 字段插入到上面 get_created_documents 查看代码的过滤器中。
首先,您现有的代码是错误的。您永远不应该对不需要迭代的查询集执行 len
:它会无缘无故地获取所有数据。相反,使用 count()
:
created_documents = CreatedDocumentDetails.objects.filter(user=user).count()
其次,既然你已经有一个条件——关于用户——添加另一个应该不会太难。你只需要一个日期比较:
date_from = datetime.datetime.now() - datetime.timedelta(days=1)
created_documents = CreatedDocumentDetails.objects.filter(
user=user, created_document_timestamp__gte=date_from).count()
您还可以考虑重命名您的函数及其变量:您实际上并没有获得创建的文档,而是在计算它们,因此 count_created_documents
或 get_created_documents_count
会是更好的名称。