Невозможно отфильтровать() пользователей по их полю date_joined
Я хочу подсчитать всех пользователей, у которых дата_joined совпадает с "сегодняшней" датой. У меня есть два пользователя, у которых в поле date_joined стоит сегодняшняя дата, но подсчет всегда возвращает ноль. Возможно, я неправильно фильтрую данные. Вот способы, которыми я пытался фильтровать данные
модели
class CustomUser(AbstractBaseUser, PermissionsMixin):
email = models.EmailField( unique= True)
full_name = models.CharField(max_length=255)
phone_no = models.CharField(max_length=10, blank= True)
address = models.CharField(max_length=500, blank= True)
plan = models.CharField(max_length=255, blank= True)
age = models.CharField(max_length=2, blank= True)
date_joined = models.DateTimeField(default=timezone.now)
просмотров
from datetime import datetime, date
def dashboard(request):
all_users = CustomUser.objects.all().exclude(is_staff = True).count()
all_users_bydate = CustomUser.objects.all().filter(date_joined= datetime.today()).count()
print(all_users_bydate)
all_users_bydate = CustomUser.objects.all().filter(date_joined= datetime.today().date()).count()
all_users_bydate = CustomUser.objects.all().filter(date_joined= datetime.today().date()).count()
даже пытались явно фильтровать
all_users_bydate = CustomUser.objects.all().filter(date_joined= date(2021, 12, 11)).count()
все эти способы не работали вообще и всегда возвращали нулевое значение. Пожалуйста, объясните мне, что я делаю неправильно.
После того, как я поиграл с кодом некоторое время, я понял, что все способы, которые я пробовал ранее, возвращают ноль, потому что 'date_joined' является DateTimeField, поэтому в коде ниже
all_users_bydate = CustomUser.objects.all().filter(date_joined= datetime.today().date()).count()
время не совпадает, поэтому счетчик возвращается как 0.
Итак, я использовал __contains для фильтрации даты. Таким образом, проверяется, содержится ли сегодняшняя дата в поле 'date_joined'. Это возвращает правильное число, т.е. 2.
all_users_bydate = CustomUser.objects.all().filter(date_joined__contains= datetime.today().date()).count()