У меня есть Django модель, например:
from django.db import models
class Person(models.Model):
# ...
last_login = models.DateTimeField(null=True, blank=True)
date_created = models.DateTimeField(auto_now_add=True)
Я хочу найти все Person
с, где last_login
в течение одного дня с date_created
.
пока у меня есть:
from datetime import timedelta
from django.db.models import F
Person.objects.annotate(
duration=F("last_login") - F("date_created")
).filter(duration__lte=timedelta(days=1))
Но хвост ошибки, когда я делаю это, выглядит так:
File ".../lib/python3.7/site-packages/django/db/models/fields/__init__.py", line 1316, in to_python
parsed = parse_datetime(value)
File ".../lib/python3.7/site-packages/django/utils/dateparse.py", line 107, in parse_datetime
match = datetime_re.match(value)
TypeError: expected string or bytes-like object
Я не уверен, что я делаю неправильно, возможно, с что timedelta(days=1)
.
Кроме того (и я не думаю, что это немедленная ошибка), я не уверен, что этот запрос будет учитывать тот факт, что last_login
может быть None
.