我在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
>>>
感谢...
答案 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']
另外值得一提的是,如果您的查询返回多个结果,则必须相应地调整代码。