【问题标题】:Django DateTimeField received a naive datetimeDjango DateTimeField 收到一个天真的日期时间
【发布时间】:2019-08-06 00:11:13
【问题描述】:

我的问题是我似乎无法根据时间戳过滤我的数据,即日期和 小时

我的模型如下:

# Create your models here.
class HourlyTick(models.Model):
    id = models.IntegerField(primary_key=True)
    timestamp = models.DateTimeField(blank=True, null=True)
    symbol = models.TextField(blank=True, null=True)
    open = models.IntegerField(blank=True, null=True)
    high = models.IntegerField(blank=True, null=True)
    low = models.IntegerField(blank=True, null=True)
    close = models.IntegerField(blank=True, null=True)
    trades = models.IntegerField(blank=True, null=True)
    volume = models.IntegerField(blank=True, null=True)
    vwap = models.FloatField(blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'xbtusd_hourly'

我的看法:

class HourlyTickList(ListAPIView):
    serializer_class = HourlyTickSerializer
    def get(self, request):
        start = request.GET.get('start', None)
        end = request.GET.get('end', None)
        tz = pytz.timezone("Europe/Paris")

        start_dt = datetime.datetime.fromtimestamp(int(start) / 1000, tz)
        end_dt = datetime.datetime.fromtimestamp(int(end) / 1000, tz)

        qs = HourlyTick.objects.filter(timestamp__range = (start_dt, end_dt))
        rawData = serializers.serialize('python', qs)
        fields = [d['fields'] for d in rawData]
        fieldsJson = json.dumps(fields, indent=4, sort_keys=True, default=str)

        return HttpResponse(fieldsJson, content_type='application/json')

我收到的信息是:

RuntimeWarning: DateTimeField HourlyTick.timestamp 收到一个幼稚的 datetime (2017-01-15 06:00:00) 时区支持处于活动状态。
运行时警告)

但是,当我使用make_aware 修复此错误时,我收到错误:

ValueError: Not naive datetime (tzinfo is already set)

我的数据库包含如下所示的数据:

2017-01-06T12:00:00.000Z

由于某种原因,第一个选项返回结果,但它完全忽略了时间。

我该如何解决这个问题?

【问题讨论】:

标签: python django


【解决方案1】:

问题是因为 Python 无法解释我存储在数据库中的格式。两种可能的解决方案:

  • 在 Django 中使用字符串转换编写原始查询
  • 以不同的格式存储日期时间字段

我选择了选项 2,因为它已经是一个用于检索数据的自动化脚本,现在它可以正常工作了。

【讨论】:

    猜你喜欢
    • 2014-03-28
    • 2014-01-29
    • 2021-01-27
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    • 2020-06-19
    • 2013-09-08
    相关资源
    最近更新 更多