Следите за руками.
У меня есть модель, описывающая карты:
class Card(AbstractCard):
""" Модель для хранения информации о картах. """
STATUSES = ( ('1', u'Активные карты'),
('2', u'Опрошенные карты'),
('3', u'Разыгрываемые карты'), )
title = models.CharField(verbose_name=u'Номер карты', max_length=7)
status = models.CharField(verbose_name=u'Состояние', max_length=1, default=1, choices=STATUSES)
changed = models.DateTimeField(verbose_name=u'Изменён', auto_now_add=True, auto_now=True)
Посмотрим, сколько записей есть в тестовой БД и убедимся в наличии карт во всех состояниях:
>>> Card.objects.all().count()
1359
>>> Card.objects.all().values('status').distinct()
[{'status': u'3'}, {'status': u'2'}, {'status': u'1'}]
Получим все опрошенные карты:
>>> for i in Card.objects.filter(status=u'2'):
print i.title, i.changed
...
z001006 2011-05-13 10:34:30
z001005 2011-05-13 10:32:31
z001004 2011-05-13 10:21:23
z001002 2011-05-13 10:00:17
z001001 2011-05-13 09:46:14
z001000 2011-05-11 17:55:51
d000018 2011-05-17 18:44:44
d000019 2011-05-17 18:47:39
d000020 2011-05-17 18:47:58
d000021 2011-05-17 18:48:43
d000022 2011-05-17 18:51:19
d000023 2011-05-17 18:55:28
d000024 2011-05-17 18:56:05
d000025 2011-05-17 19:08:27
d000026 2011-05-17 19:14:31
d000027 2011-05-17 19:17:09
d000028 2011-05-17 19:17:42
d000029 2011-05-17 19:18:24
d000030 2011-05-17 22:38:02
d000031 2011-05-17 22:53:27
r000003 2011-05-18 00:35:16
n000001 2011-05-18 19:14:23
n000003 2011-05-18 19:15:02
n000004 2011-05-18 19:15:12
n000005 2011-05-18 19:15:21
n000006 2011-05-18 19:15:30
n000007 2011-05-18 19:15:45
Ограничим эту выборку по времени:
>>> for i in Card.objects.filter(
status=u'2',
changed__range=(
datetime(2011,5,17,18,44,44),
datetime(2011,5,17,22,53,27))):
print i.title, i.changed
...
d000018 2011-05-17 18:44:44
d000019 2011-05-17 18:47:39
d000020 2011-05-17 18:47:58
d000021 2011-05-17 18:48:43
d000022 2011-05-17 18:51:19
d000023 2011-05-17 18:55:28
d000024 2011-05-17 18:56:05
d000025 2011-05-17 19:08:27
d000026 2011-05-17 19:14:31
d000027 2011-05-17 19:17:09
d000028 2011-05-17 19:17:42
d000029 2011-05-17 19:18:24
d000030 2011-05-17 22:38:02
d000031 2011-05-17 22:53:27
Надеюсь, теперь понятно, что дело не в операторе BETWEEN?