0

我正在尝试使用 Python 2.7 和 Django 1.5 制作一个简单的天气 JSON API。

我的 WeatherData 模型如下所示:

class WeatherData(models.Model):
    created_at = models.DateTimeField(auto_now_add=True)
    temp_f = models.DecimalField()

在我看来,我想将created_atDjango 存储的 datetime 对象转换为 UTC 秒。(我知道会有时区问题。)

我已经知道如何将 datetime 对象(名为MYTIME)转换为秒:

import time
time.mktime(MYTIME.timetuple())

但是,当我定义时,queryset = WeatherData.objects.all()我想不出一种方法将这些日期时间对象即时转换为 UTC 秒,同时保持查询集对象。简而言之,我想在模板中渲染之前修改视图中返回的查询集。

我是使用 Django 和 MySQL 的新手,但我想有办法做到这一点。

注意:我使用的是TastyPie,所以我无法直接访问模板文件。我在 ModelResource 类中指定查询集字段:

class WeatherResource(ModelResource):
    class Meta:
        queryset = WeatherData.objects.all()
        fields = ['created_at' 'temp_f']

我在这里先向您的帮助表示感谢!

4

1 回答 1

5

您不必修改它,只需向WeatherData执行此操作的类添加一个方法,并在模板中为查询集中的每个对象调用该方法:

import time
class WeatherData(models.Model):
    created_at = models.DateTimeField(auto_now_add=True)
    temp_f = models.DecimalField()

    def created_at_utc(self):
        # whatever logic you need to do the conversion
        return time.mktime(self.created_at.timetuple())

并在您的模板中执行此操作:

{% for data in deatherdata %}
    data.created_at_utc
{% endfor %}

我希望它有帮助!

于 2013-05-16T18:51:47.847 回答