Djangoのカスタム管理ユーザー管理ページ

ユーザー管理は、通常、デフォルトの管理ページやエディットリストで、気にしない、我々は動作するようにカスタマイズする必要があります。

ユーザーリストはより多くのコンテンツを表示するようにすることを、次のコードadmins.pyを追加します。

from django.contrib import admin
 # 1. 导入默认UserAdmin 作为Base Class
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.contrib.auth.models import User

# 2.  Define a new User admin
class UserAdmin(BaseUserAdmin):
    # 3. 重新定义 list_display
    list_display = ('username', 'email', 'first_name', 'last_name', 'is_active', 'date_joined', 'is_staff') 

# 4. 注销 User
admin.site.unregister(User)
# 5. 重新注册 User
admin.site.register(User, UserAdmin)

あなたのUserモデル属性場合は、次のようになのUserProfileなど他のテーブルに関連付けられ、そして同じページで、管理します:

  1. 最後のステップでは、独自のプロファイルモデルをインポートします
  2. インラインクラス定義
  3. のインライン追加情報USERADMINカスタム
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.contrib.auth.models import User
from accounts.models import UserProfile


class UserProfileAdmin(admin.ModelAdmin):
    list_display = ['user', 'phone_number', 'gender', 'date_of_birth', 'address', 'suburb', 'city', 'post_code']


# Define an inline admin descriptor for Employee model
# which acts a bit like a singleton
class EmployeeInline(admin.StackedInline):
    model = UserProfile
    can_delete = False
    verbose_name_plural = 'profile'


# Define a new User admin
class UserAdmin(BaseUserAdmin):
    list_display = ('username', 'email', 'first_name', 'last_name', 'is_active', 'date_joined', 'is_staff')
    inlines = (EmployeeInline,)


# Re-register UserAdmin
admin.site.unregister(User)
admin.site.register(User, UserAdmin)
admin.site.register(UserProfile, UserProfileAdmin)

参照文献:
https://www.jianshu.com/p/0a34918160ab

おすすめ

転載: www.cnblogs.com/hupingzhi/p/12600659.html