【问题标题】:unable to filter() users with their date_joined field无法使用 date_joined 字段过滤()用户
【发布时间】:2022-01-15 15:44:53
【问题描述】:

我想统计所有 date_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()

所有这些方法根本不起作用,总是重新调整为零。请纠正我做错了什么。

【问题讨论】:

    标签: django django-views django-queryset


    【解决方案1】:

    所以在玩了一段时间的代码之后,我理解的是我之前尝试过的所有返回零的方法,因为“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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-28
      • 1970-01-01
      • 2022-07-31
      • 1970-01-01
      • 2010-12-09
      • 1970-01-01
      • 2020-11-07
      相关资源
      最近更新 更多