如何编写 Django QuerySet 来获取 DateTimeField 的 UNIX_TIMESTAMP?
Posted
技术标签:
【中文标题】如何编写 Django QuerySet 来获取 DateTimeField 的 UNIX_TIMESTAMP?【英文标题】:How to write Django QuerySet to get UNIX_TIMESTAMP of a DateTimeField? 【发布时间】:2015-09-25 09:05:42 【问题描述】:这个问题是here 的后续问题。
假设我有以下 Django 模型:
from django.db import models
from django.db.models import Sum
class myModel(models.Model):
my_string = models.CharField(max_length=32,)
my_date = models.DateTimeField()
@staticmethod
def get_stats():
logger.info(myModel.objects.values('my_string').annotate(
count=Count('my_string'),
sum=Sum(F('my_date')+0)), #THIS NEEDS TO CHANGE. TO WHAT??
)
)
我想计算 mysql 表达式 UNIX_TIMESTAMP('my_date')
的总和,而不是计算 my_date
的总和。我怎样才能修改上面的 Django QuerySet 来完成呢?
注意:这个问题不是 this one 的重复问题,因为我在问如何从 QuerySet 中获取这个值(IE:如何让数据库返回这个值)。在那个问题中,没有数据库。它是直接的非 Django python。我正在使用 Django。
【问题讨论】:
【参考方案1】:看func-expressions
from django.db.models import Func, F, Sum
queryset.annotate(sum=Sum(Func(F('my_date'), function='UNIX_TIMESTAMP')))
【讨论】:
以上是关于如何编写 Django QuerySet 来获取 DateTimeField 的 UNIX_TIMESTAMP?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Django QuerySet 中获取绝对图像 URL 列表?
Django Admin:获取根据 GET 字符串过滤的 QuerySet,与更改列表中看到的完全一样?