2017-12-28 41 views
0

AbstractUserメソッドを使用してdjangoのユーザモデルを拡張しました。問題は、私のカスタムフィールドはdjango管理パネルに表示されないということです。カスタムユーザモデルフィールド(AbstractUser)がdjango管理者に表示されない

マイmodels.py:

from django.contrib.auth.models import AbstractUser 


class User(AbstractUser): 
    is_bot_flag = models.BooleanField(default=False) 

マイadmin.py:あなたのカスタムフィールドを表示したい場合は、同様UserAdminオーバーライドする必要が

from django.contrib.auth.admin import UserAdmin 
from .models import User 

admin.site.register(User, UserAdmin) 

おかげ

+0

djangoのバージョン – aashu

+0

を指定してください。 'python manage.py makemigrations' ' python manage.py migrate' –

+0

@aashu django 2.0、そして、私はpython manage.py makemigrationsを行いました。その後、移行しました – SadFrodo

答えて

0

。ドキュメントにexample hereがあります。

ユーザーデータを作成(および変更)するためのフォームを作成し、UserAdminを上書きする必要があります。ユーザーを作成するためのフォームは次のようになります。

class UserCreationForm(forms.ModelForm): 
    password1 = forms.CharField(label='Password', widget=forms.PasswordInput) 
    password2 = forms.CharField(label='Password confirmation', widget=forms.PasswordInput) 

    class Meta: 
     model = User 
     fields = '__all__' 

    def clean_password2(self): 
     password1 = self.cleaned_data.get("password1") 
     password2 = self.cleaned_data.get("password2") 
     if password1 and password2 and password1 != password2: 
      raise forms.ValidationError("Passwords don't match") 
     return password2 

    def save(self, commit=True): 
     user = super().save(commit=False) 
     user.set_password(self.cleaned_data["password1"]) 
     if commit: 
      user.save() 
     return user 

あなたがしてUserAdminを上書き:

from django.contrib.auth.admin import UserAdmin as BaseUserAdmin 

class UserAdmin(BaseUserAdmin): 
    add_form = UserCreationForm 
    add_fieldsets = (
     (None, { 
      'classes': ('wide',), 
      'fields': ('email', 'first_name', 'last_name', 'is_bot_flag', 'password1', 'password2')} 
     ), 
    ) 

、その後、あなたが登録:

admin.site.register(User, UserAdmin) 

私はかなりコピー/ドキュメントからこれを貼り付け、いくつかを削除しましたコードを短くするドキュメントに移動して、ユーザーデータを変更するためのサンプルコードを含む完全な例を参照してください。

+0

解決策を見つけるのを助けてくれてありがとう、私はもっと簡単でした - admin.py:class UserAdmin(admin.ModelAdmin)にこれを追加する必要がありました: model = User filter_horizo​​ntal =( 'user_permissions'、 'groups'、) – SadFrodo

関連する問題