如何在Django DateField中将仅日期保存到Mongodb

1 投票
1 回答
1613 浏览
提问于 2025-04-17 21:09

我想在mongodb数据库中只保存日期。为此,我在django模型中使用了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 个回答

2

这实际上正是你想要的效果,尽管你可能觉得不是。让我来解释一下,你在mongo shell中看到的内容是这样的:

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

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

实际上,字段中的值是一个BSON日期,这是一种特别标记的时间值。这个格式非常有用,正是你真正想要的,因为服务器把它当作一个有效的日期,可以和其他日期进行比较,还可以对它进行各种日期操作等等。

而且,就像你的应用程序“刚刚保存了这个”原生日期对象一样,当你从集合中读取这个值时,你也会得到一个原生日期对象。

避免的做法是把这些值转换成字符串,这样在你读取数据时又得转换回来。

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

撰写回答