如何从django模型中获取datetime.date()值?

时间:2011-12-02 04:01:30

标签: python django

我在django中获取datetime.date()值时遇到问题... 当我想要这样的时候:

>>> s = Booking.objects.values('date_select').distinct('date_select').filter(date_select='2011-12-1')
>>> print s
[{'date_select': datetime.date(2011, 12, 1)}]

它有date_select列,我只想要datetime.date(2011,12,1),有没有人对它有所了解?我也试过这个,但它不起作用:

>>> s = Booking.objects.values('date_select').distinct('date_select').filter(date_select='2011-12-1')['date_select']
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 153, in __getitem__
    raise TypeError
TypeError
>>> 

感谢...

2 个答案:

答案 0 :(得分:1)

您将返回包含一个元素的列表,因此您需要执行此操作:

s = Booking.objects.values('date_select').distinct('date_select').filter(date_select='2011-12-1')[0]['date_select']

答案 1 :(得分:0)

Dimitry的答案有效但如果你的查询根本没有返回任何结果会引发异常(因为索引不存在,可能导致IndexError异常)。

这样做相同,但如果查询返回空结果则不会出错:

s = Booking.objects.values('date_select').distinct('date_select').filter(date_select='2011-12-1')
if s.count():
    s = s.get()['date_select']

另外值得一提的是,如果您的查询返回多个结果,则必须相应地调整代码。