2014-09-11 134 views
-1

如何根据以下查询得到结果。根据日期(月份和年份)筛选结果

这是我model.py

class Revenue_Report(models.Model): 
    value = models.CharField(max_length = 100) 
    value_name = models.CharField(max_length = 225) 
    tracks_id = models.ForeignKey(Tracks) 
    posted_date = models.DateTimeField(auto_now_add=True) 

我需要得到的结果月份和年份明智

monthPillDetails=Revenue_Report.objects.values('value').filter(posted_date__year='2014',posted_date__month='09') 

当我运行查询,我得到空的结果,但我在我的表有数据。

更新时间:

当我给这样的

monthPillDetails=Revenue_Report.objects.filter(posted_date__year='2014').values('value')  

控制台输出为[{'value': u'12345'}, {'value': u'12345'}, {'value': u'12345'}, {'value': u'123456'}, {'value': u'12345'}]

但尝试一个月,当它返回无[]

monthPillDetails=Revenue_Report.objects.filter(posted_date__month='09').values('value') 
+0

查询是否在没有值语句的情况下工作?如果交换数值和过滤器会怎样? – power 2014-09-11 11:56:48

+0

monthPillDetails = Revenue_Report.objects.filter(posted_date__year ='2014')。values('value') – 2014-09-11 12:02:04

+0

看到我更新的查询 – 2014-09-11 12:08:55

回答

0

使用,你想看看

where = "Month(posted_date)='09'" 
monthPillDetails=Revenue_Report.objects.extra(where=[where]) 

当您打印monthPillDetails你会得到的结果尝试。,

1

用途:

monthPillDetails=Revenue_Report.objects.values_list('value').filter(posted_date__year='2014') 
+0

即将到来的年份'见我的编辑',但我需要打印明智的月份。 – 2014-09-11 12:07:56

+0

尝试它Django壳。任何错误?可能是你的时区配置不正确settings.py – 2014-09-11 12:15:27

+0

我在django shell中检查没有错误结果是[] – 2014-09-11 12:17:21

0

尝试通过整一个月来过滤,不串:

filter(posted_date__month=9) 
+0

>>> monthPillDetails = Revenue_Report.objects.filter(posted_date__month = 9).values_list( '值') >>> monthPillDetails [] – 2014-09-11 12:33:44

+0

SELECT * FROM revenue_report WHERE MONTH(posted_date)='09';当我在MySQL工作台中运行这个查询时,我会得到结果,但我需要在Django过滤器中查询 – 2014-09-11 12:34:24

+0

Check Revenue_Report.objects.filter(posted_date__month = 9).query – power 2014-09-11 13:12:21

相关问题