Джанго неправильно запрашивает дату? - PullRequest
2 голосов
/ 05 января 2011

В основном у меня есть два datetime, по одному от каждой модели.По словам питона, даты и время равны.Когда я пытаюсь запросить объект одного типа с указанием даты / времени другого, результаты не возвращаются.Однако, когда я пытаюсь сделать обратное и запросить другое к дате / времени первого, возвращается результат.Приведенные ниже примеры должны прояснить, что не так.

Мои модели выглядят так (сокращенно):

class Shift(models.Model):
    normalized_start = models.DateTimeField(null=True)

class ScheduledShift(models.Model):
    start_datetime = models.DateTimeField()

Неожиданное поведение, не возвращающее результат:

>>> shift = m.Shift.objects.get(pk=796)
>>> scheduled_shift = m.ScheduledShift.objects.get(pk=1)
>>> shift.normalized_start == scheduled_shift.start_datetime
True
>>> shift.normalized_start, scheduled_shift.start_datetime
(datetime.datetime(2011, 1, 4, 23, 15), datetime.datetime(2011, 1, 4, 23, 15))
>>> m.ScheduledShift.objects.filter(start_datetime=shift.normalized_start)
[]

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

>>> m.Shift.objects.filter(normalized_start=scheduled_shift.start_datetime)
[<Shift 796>]

Я использую SQLite, если это имеет какое-либо значение.

1 Ответ

0 голосов
/ 05 января 2011

Попробуйте посмотреть на SQL, генерирующий сами таблицы. Судя по комментариям на ваш вопрос, похоже, что SQLite использует разные типы данных для хранения нулевых и ненулевых данных, что вызывает ошибку форматирования.

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