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})