Django通过通用USERNAME_FIELD获取用户

时间:2017-10-25 09:49:48

标签: python django django-models

是否有一种很好的方法可以让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进行查询

1 个答案:

答案 0 :(得分:1)

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

user = User._default_manager.get_by_natural_key(username_variable)

这基本上是这样做的:

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