Python Django UserSocialAuth匹配查询不存在

Python Django UserSocialAuth匹配查询不存在,python,django,frameworks,pygithub,Python,Django,Frameworks,Pygithub,我正在用GithubAPI开发一个web应用程序。我想获取已使用Python Social Auth进行身份验证的用户的令牌,但在尝试访问该用户的令牌时,出现以下错误UserSocial Auth匹配查询不存在 我真的不知道如何访问这些额外的数据 以下是我尝试访问令牌时的代码: if request.user.is_authenticated: gituser = request.user.social_auth.get(provider ='github-oauth2'

我正在用GithubAPI开发一个web应用程序。我想获取已使用Python Social Auth进行身份验证的用户的令牌,但在尝试访问该用户的令牌时,出现以下错误UserSocial Auth匹配查询不存在

我真的不知道如何访问这些额外的数据

以下是我尝试访问令牌时的代码:

    if request.user.is_authenticated:
        gituser = request.user.social_auth.get(provider ='github-oauth2')
        extra_data = str(gituser.extra_data['access_token'])

提前谢谢

您正试图使用get获取单个对象,由于该对象不存在,它将返回DoesNotExist异常。 使用filter而不是get,如下所示:

gituser = request.user.social_auth.filter(provider ='github-oauth2')

for user in gituser:
  extra_data = user.extra_data
from django.shortcuts import get_object_or_404

gituser = get_object_or_404(UserSocialAuth, provider ='github-oauth2')
extra_data = gituser.extra_data
或者您可以使用get_object_或_404,如下所示:

gituser = request.user.social_auth.filter(provider ='github-oauth2')

for user in gituser:
  extra_data = user.extra_data
from django.shortcuts import get_object_or_404

gituser = get_object_or_404(UserSocialAuth, provider ='github-oauth2')
extra_data = gituser.extra_data

谢谢你的回答!但是现在它给了我'QuerySet'对象没有属性'extra_data',你不能直接获得extra_数据。当使用过滤器时,它返回queryset,所以通过queryset循环。请参阅我更新了我的答案。这样,您可以获得额外的\u数据,但get\u object\u或\u 404将只返回一个对象。对于多个,您可以使用get_list_或_404