Extending Django’s user admin

         ·     

The built in admin pages that you get in Django can be useful, but they particularly become useful once you start to add a lot more functionality to them.

For instance the Django’s User authentication system (which lives in django.contrib.auth ) is widely used, and quite often you need to extend the user’s profile by using AUTH_PROFILE_MODULE and a separate model. But having a separate Admin screen for this is kind of pointless.

In the admin.py file for your model which provides extra information (in my example it is called UserProfile just do the following:

[cc lang=“python”]

from django.contrib import admin

from django.contrib.auth.admin import UserAdmin

from django.contrib.auth.models import User

from models import UserProfile

class UserProfileInline(admin.TabularInline):

model = UserProfile

fk_name = ‘user’

max_num = 1

class CustomUserAdmin(UserAdmin):

inlines = [UserProfileInline,]

list_display = (‘username’, ‘email’, ‘first_name’, ‘last_name’, ‘is_staff’, ‘is_active’)

admin.site.unregister(User)

admin.site.register(User, CustomUserAdmin)

[/cc]

Simple once you know how.

comments powered by Disqus