У меня есть модель:
class Host(models.Model):
create_date = models.DateTimeField(auto_now_add=True)
update_date = models.DateTimeField(auto_now=True)
Я хотел бы отфильтровать все объекты, которые имеют create_date.date () == update_date.date (), поэтому я использую этот Django Запрос:
Host.objects.filter(create_date__date=F("update_date__date")).count()
Предполагается, что в моей базе данных есть хосты с create_date.date () == update_date.date (), поэтому я ожидаю возвращаемое значение для count()
> 0; однако в результате я получаю 0.
Тем временем, если я использую этот запрос:
Host.objects.filter(create_date__date__lt=F("update_date__date")).count()
, я получу ожидаемый результат.
В дополнение к этому, У меня есть
a = Host.objects.filter(create_date__date__lt=F("update_date__date")).count()
b = Host.objects.filter(create_date__date__lte=F("update_date__date")).count()
a == b # True
Из вышеприведенного a==b # True
, я думаю, что e
в lte
не вступает в силу, что означает, что нет никаких случаев, когда мои две даты совпадают, но есть в моем сценарии.
Вопрос : Почему я не могу сделать сравнение равенства для Django запроса на DateTimeField?