在我的应用程序中,我在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,但结果相同。
发生了什么事?
答案 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'