如何使用Django DateField仅在Mongodb中保存日期

时间:2014-03-06 16:35:49

标签: python django mongodb django-models

我想只在mongodb数据库中保存日期。因为我在django models中使用了DateField。但是在数据库中它保存为,

ISODate("2014-02-24T00:00:00Z") 

我的代码

models.py:

class Newdate(models.Model):
    today=models.DateField()

    def __unicode__(self):
        return self.today

views.py

def saveDate(request):
    mydate=request.GET['today']
    date=Newdate(today=request.GET['today'])
    date.save()
    result=Newdate.objects.all().values()
    return HttpResponse(result)

怎么做..?

我正在使用python 2.7,django 1.5.4

1 个答案:

答案 0 :(得分:1)

即使您认为这不是它正在做的事情,这也正是您希望它做的事情。为了解释,这是你在mongo shell中看到的:

 ISODate("2014-02-24T00:00:00Z") 

实际上是字段中的值,它只是shell代表它的方式。所以它不是你想象的字符串值。

在字段内部,值为BSON日期,这是特殊时间值的特殊标记版本。这是非常有用,以及您真正想要的,因为它被服务器视为正确的日期,并且可以与其他日期值进行比较,对其执行不同的日期操作,等等。

同样正如您的应用程序“刚刚保存此内容”不提供本机日期对象一样,当从集合中读回时,您将获取本机日期对象

要做的是将这些转换为应用程序中的字符串,因此在读取数据时必须转换回来。

坚持使用原生日期,这就是你真正想要的。