【问题标题】:order_by date_join in DjangoDjango 中的 order_by date_join
【发布时间】:2022-11-13 13:07:01
【问题描述】:

我正在向管理仪表板显示用户信息,我想按用户的加入日期对用户进行排序。 在另一个页面上,我只想显示最近登录的 10 个用户信息。

我正在过滤这样的用户数据:

data = Profile.objects.filter(Q(user__is_superuser=False), Q(user__is_staff=False))

模型.py

class Profile(models.Model):
user = models.OneToOneField(User,default="1", on_delete=models.CASCADE)   
image = models.ImageField(upload_to="images",default="default/user.png")
def __str__(self):
   return f'{self.user} profile'

请帮助我做到这一点。

【问题讨论】:

    标签: python django django-models django-views django-queryset


    【解决方案1】:

    我假设您有某些字段,例如个人资料中的上次登录来跟踪登录历史记录。

    利用:

    user__last_login
    

    现在您可以过滤为:

    data = Profile.objects.filter(Q(user__is_superuser=False), Q(user__is_staff=False)).order_by('-user__last_login')[:10]
    

    【讨论】:

    • 实施此解决方案后,我收到错误FieldError at /admin_home Cannot resolve keyword 'user.last_login' into field. Choices are: id, image, user, user_id
    • 我必须创建字段last_login 吗?
    【解决方案2】:

    user.last_login

    您可以根据 last_login 字段订购用户查询集,并在查询集末尾使用 [:10] 获取前 10 个

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-07
      • 1970-01-01
      • 2012-04-26
      • 1970-01-01
      • 2019-12-20
      • 2011-11-28
      • 2022-01-07
      • 1970-01-01
      相关资源
      最近更新 更多