我有一个用户管理器,它有一个无密码创建用户的方法。现在,我需要获取所有未激活的用户user.is_active=False
和user.has_usable_password()=False
。
has_usable_password()的Django doc链接。
我不想做下面的事情。
User.objects.filter(is_active=False, password__has_usable_password=False)
答案 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)。