Django通过is_active和has_usable_password()方法过滤用户

时间:2018-04-30 10:51:36

标签: django django-models

我有一个用户管理器,它有一个无密码创建用户的方法。现在,我需要获取所有未激活的用户user.is_active=Falseuser.has_usable_password()=False

has_usable_password()的Django doc链接。

我不想做下面的事情。

User.objects.filter(is_active=False, password__has_usable_password=False)

1 个答案:

答案 0 :(得分:2)

has_usable_password未存储在数据库中,因此您无法直接在查询集中使用它,而您可以检查密码是以!开头还是为空:

from django.db.models import Q
User.objects.filter(Q(is_active=False), Q(password__startswith='!') | Q(password__isnull=True))

这正是has_usable_password所做的事情(source)。