Django + PostgreSQL:查询返回不正确的结果

时间:2012-07-06 18:30:04

标签: django postgresql

在我的应用程序中,我在PostgreSQL数据库上创建了一个视图,并将该视图映射到Django中的非托管模型。

出于某种原因,当我在Django中查询此模型时,其中一个元组返回的结果不正确。

这是我的CREATE VIEW代码:

  CREATE VIEW test_view_a AS
  SELECT ROW_NUMBER() OVER (ORDER BY account_id, person_id)::int AS id,
  AVG(EXTRACT(epoch FROM date_trunc('second', meeting_time)))::int AS avg_meeting_time,
  AVG(EXTRACT(epoch FROM date_trunc('second', office_time)))::int AS avg_office_time,
  AVG(EXTRACT(epoch FROM date_trunc('second', traffic_time)))::int AS avg_traffic_time,
  account_id,
  person_id
  FROM test_view_b
  GROUP BY account_id, person_id
  ORDER BY account_id, person_id;

这是我直接在数据库中查询时返回的数据:

 id | avg_meeting_time | avg_office_time | avg_traffic_time | account_id | person_id 
----+------------------+-----------------+------------------+------------+-----------
  1 |            64800 |               0 |             1514 |          1 |         8
  2 |            14400 |               0 |            29290 |          3 |         9
  3 |            14400 |               0 |                0 |          3 |        10
(3 rows)

当我通过Django查询此视图时,第二行和第三行正确返回,但第一行返回avg_meeting_time为-1144800,avg_traffic_time为1202400:

>>> from test.models import *
>>> queryset = ViewA.objects.all()
>>> '%i %i' % (queryset[0].avg_meeting_time, queryset[0].avg_traffic_time)
'-1144800 1202400'

我尝试直接通过django.db.connection对象查询此视图,甚至尝试执行以这种方式生成视图的查询。结果始终相同,与数据库中的结果不同。

我正在使用PostGIS的空间数据库,如果这很重要的话。我尝试将后端切换到psycopg2,但结果相同。

发生了什么事?

2 个答案:

答案 0 :(得分:1)

尝试调试你

>>> from test.models import *
>>> queryset = ViewA.objects.all()
>>> '%i %i' % (queryset[0].avg_meeting_time, queryset[0].avg_traffic_time)

from django.db import connection
connection.queries

并同意Burhan Khalid - 模型将是有用的

答案 1 :(得分:0)

你应该检查你的settings.py你有正确的语言环境吗?

TIME_ZONE ='America / Chicago'