

Django の `django-social-auth` のプラグインを使ってます。

こちらで Facebook で認証した後に生成されたユーザで Django の admin に入りたいと思ってます。

まず、models.py にこのユーザを作成し、  
is_staff を無理やり True にしようと、以下のようにしました。

[code]

    class CustomUser(User):
        class Meta:
            verbose_name = u'カスタムユーザ'
            verbose_name_plural = verbose_name
    
        def __init__(self, *args, **kwargs):
            super(User, self).__init__(*args, **kwargs)
            # self._meta.get_field('is_staff').default = True # 試したが出来ない
            super(User, self)._meta.get_field('is_staff').default = True
    
    # CustomUser._meta.get_field('is_staff').default = True
    
[/code]

settings.py にて

[code]

    SOCIAL_AUTH_USER_MODEL = 'my_app.CustomUser' 
    
[/code]

のように行いました。  
コメントアウトしたものもいろいろ試しました。

しかし、Facebook ユーザでログインできませんでした。

次に、それらしき記事を見つけました。

<https://djangosnippets.org/snippets/2856/>

しかし、出来ませんでした。  
settings.py の中では、  
`USE_SOCIAL_AUTH_AS_ADMIN_LOGIN` なのに、admin.pyで
`SOCIAL_AUTH_USE_AS_ADMIN_LOGIN`  
となってるものおかしいと思い同じ変数に変更しましたがそれでも出来ませんでした。

もし解決策がありましたら、ご教示いただきたいです。


CC BY-SA 3.0
2015-02-27T09:55:50.773
7216
2015-07-29T12:48:58.477
2015-02-28T08:28:42.167
7926
7934
question
python oauth social-framework facebook-api django
Django の social_auth の Facebook ユーザで admin に入る


> しかし、Facebook ユーザでログインできませんでした。

ここが、Django側でユーザーが作成されているかで違ってくると思います。  
ので、

> is_staff を無理やり True にしようと

この部分についてのみ回答します。以下、CutomUserの改善コードです。

[code]

    class CustomUser(User):
        class Meta:
            verbose_name = u'カスタムユーザ'
            verbose_name_plural = verbose_name
    
        def __init__(self, *args, **kwargs):
            super(User, self).__init__(*args, **kwargs)
            self.is_staff = True 
    
[/code]

`__init__()` の最初の処理ですでに `is_staff` が `False` になっているので、次の処理で無条件に `True` にしています。


CC BY-SA 3.0
2015-03-01T10:22:21.137
7272
2015-03-01T10:22:21.137
2784
7216
answer