假设我有这个查询:
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)
在 DataForecast 模型中定义一个名为 date_time_formatted 的属性:
@property
def date_time_formatted(self):
return self.date_time.strftime('%Y-%m-%d')
将 getall 查询中的 date_time 替换为 date_time_formatted。
您可以将值添加为注释函数:
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')