【发布时间】:2014-08-02 13:53:32
【问题描述】:
我在过滤对象时遇到问题。 在本地机器上正常运行的代码在服务器上不起作用。
这是用例: 我在 2014 年 7 月创建的数据库表中有多个对象。 我需要统计本月和本年创建的所有对象,所以我这样做:
number = Payment.objects.filter(time_created__year=year_created, time_created__month=month_created).count()+1
很遗憾,它总是返回 1,因为过滤不起作用,它找不到 7 月创建的对象。
当我尝试使用 shell 选择对象时:
Payment.objects.filter(time_created__year=2014, time_created__month=8)
返回[](无结果)。我试过了:
Payment.objects.filter(time_created__year=2014)
返回多个对象。所以我想选择第一个对象:
a = Payment.objects.filter(time_created__year=2014)[0]
并试图显示它的月份:
a.time_created.month
我很惊讶,因为它返回了8
你有什么想法,为什么我不能使用月份过滤对象?再说一次,它可以在本地机器上正常工作,但不能在生产主机上使用 linux。 p>
【问题讨论】:
-
我的猜测是这与本地化有关,我认为它们在两台机器上都不同。还要检查docs.djangoproject.com/en/1.6/topics/i18n/timezones
-
我虽然是这样,但上面的代码应该可以在 linux 机器上运行,但它不能。为什么单个对象的
time_created.month返回 8,而当我尝试使用此数字进行过滤时,我得到 0 个结果? -
按月仅过滤时是否得到结果?
-
您是否为本地开发环境和生产服务器使用相同的后端?
-
仅按月过滤时,我什么也得不到。
标签: django django-models django-orm