Как получить значение datetime.date () из модели Django? - PullRequest
1 голос
/ 02 декабря 2011

У меня проблема с получением значения datetime.date () в моем django ... когда я пытаюсь получить это так:

>>> 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 ]

1 голос
/ 02 декабря 2011

вы получаете список с одним элементом, поэтому вам нужно сделать это:

s = Booking.objects.values('date_select').distinct('date_select').filter(date_select='2011-12-1')[0]['date_select']
0 голосов
/ 02 декабря 2011

Ответ Димитрия работает, но он вызовет исключение, если ваш запрос вообще не даст результатов (поскольку индекс не будет существовать, что, вероятно, приведет к исключению IndexError).

Это делает то же самое, но не выдаст ошибку, если запрос вернет пустые результаты:

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

Также стоит отметить, что если ваш запрос возвращает более одного результата, вам придется соответствующим образом изменить код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...