我的模特是
class SMS(models.Model):
subscriberId = models.ForeignKey(Subscriber, null=False)
epochTime = models.IntegerField(null = False)
time = models.CharField(max_length= 250 ,blank = False)
date = models.CharField(max_length= 50 ,blank = False)
现在,问题是我将日期保存为字符1-11-2015
并使用date__range
过滤器,如下所示:
SMS.objects.filter(date__range =["1-11-2015","12-11-2015"]).count()
但它给了我错误的结果。
那么,如何有效地使用这个date__range
过滤器?
答案 0 :(得分:0)
您正在__range
上执行CharField
运算符,因此范围比较是基于字符而不是基于日期进行的。
您已经有一个字段epochTime = models.IntegerField(null = False)
,我假设是一个UNIX时间纪元。
要开始使用软件,您可以执行epochTime__range
查询,如果您传入epochTime__range=(timestamp_integer_start, timestamp_integer_end)
范围,则可以正确显示结果。 You'll have to pass an integer that represents the date/time for this
否则,您可以添加timestamp = models.DateTimeField()
并复制epochTime
字段中的值。
很容易从UNIX timestamp in integer format to a Python datetime object转换,您可以将其作为Django中DateTimeField
的值传入。
底线是,无需复制模型中的date
和time
字段,使用表示时间戳的单个字段。我建议使用DateTimeField
,因为您在Django中的查询会更容易。