Skip to main content
 首页 » 编程设计

python之Django 通过通用 USERNAME_FIELD 获取用户

2025年01月19日27bjzhanghao

有没有一种很好的方法可以让 Django 用户模型使用通用 USERNAME_FIELD 进行查询?

换句话说,代替:

User.objects.get(username='my_user') 或 User.objects.get(email='test@user.com')

我想做这样的事情:

User.objects.get(User.USERNAME_FIELD=a_username_variable)

显然,后者会抛出一个SyntaxError,但我想问的是是否有一种方法可以根据USERNAME_FIELD进行查询

请您参考如下方法:

默认ModelBackend身份验证后端使用:

user = User._default_manager.get_by_natural_key(username_variable) 

这基本上是在做:

user = User.objects.get(**{User.USERNAME_FIELD: username_variable})