如何更改 Django 中查询集中的日期时间格式值?

问题描述 投票:0回答:2

假设我有这个查询:

getall = DataForecast.objects.all().values("date_time", "rainfall_mm_per_10_min", "wl_observed_m",
                                       "wl_forecasted_m")
return HttpResponse(json.dumps(list(getall),cls=DjangoJSONEncoder), content_type='application/json')

date_time
是我模型中的
DateTimeField
,查询返回一个 JSON 数据,其中 date_time 格式结果如下,例如
"date_time": "2014-01-18T14:00:00"
。就我而言,这很难阅读。有什么方法可以像这样重新格式化
date_time
值吗
Jan 18, 2014 02:00 PM

我知道我可以通过例如

{{dates.date_time | date:'M d, Y h:i A'}}
操作模板中的格式,但我的查询返回 JSON 数据,并且我正在将这些数据用于我的Highcharts

这是我的模型:

class DataForecast(models.Model):
    date_time = models.DateTimeField()
    rainfall_mm_per_10_min = models.FloatField(null=True)
    wl_observed_m = models.FloatField(null=True)
    wl_forecasted_m = models.FloatField(null=True)
django datetime highcharts
2个回答
1
投票

在 DataForecast 模型中定义一个名为 date_time_formatted 的属性:

@property
def date_time_formatted(self):
    return self.date_time.strftime('%Y-%m-%d')

将 getall 查询中的 date_time 替换为 date_time_formatted。


0
投票

您可以将值添加为注释函数:

from django.db.models import Func, F, Value, CharField
...
getall = DataForecast.objects.all().values(
    "date_time", 
    "rainfall_mm_per_10_min", 
    "wl_observed_m", 
    "wl_forecasted_m"
).annotate(
    date_time_formatted=Func(
    F('date_time'),
    Value('DD-MM-YYYY HH:MM:SS'),
    function='to_char',
    output_field=CharField()
  )
)

return HttpResponse(json.dumps(list(getall),cls=DjangoJSONEncoder), content_type='application/json')
© www.soinside.com 2019 - 2024. All rights reserved.