Django通过通用USERNAME_FIELD获取用户

时间:2021-07-15 19:22:22

Is there a nice way to get a user from Django User model making a query with the generic USERNAME_FIELD instead?

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

In other words, instead of:

换句话说,而不是:

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

User.objects.get(用户名=“my_user”)或User.objects.get(邮件=“test@user.com”)

I would like to do something like:

我想做的是:

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

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

Obviously, the latter throws a SyntaxError, but I am asking if there is a way to query based on USERNAME_FIELD

显然,后者抛出一个SyntaxError,但是我想问是否有一种基于USERNAME_FIELD的查询方法

1 个解决方案

#1


1  

The default ModelBackend authentication backend uses:

默认的模型后端身份验证后端使用:

user = User._default_manager.get_by_natural_key(username_variable)

This is basically doing:

这是主要做:

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

#1


1  

The default ModelBackend authentication backend uses:

默认的模型后端身份验证后端使用:

user = User._default_manager.get_by_natural_key(username_variable)

This is basically doing:

这是主要做:

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