From 18d88a169fecf7efa2fba2ba2867e7a37084c7fc Mon Sep 17 00:00:00 2001 From: Tim Graham Date: Sat, 15 Sep 2012 07:37:33 -0400 Subject: [PATCH] [1.4.x] Fixed #16929 - Documented how to extend UserAdmin with UserProfile fields; thanks charettes for the draft example. Backport of 22242c510f84c53803afe2907649c892cb1b3d9a from master. --- docs/topics/auth.txt | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/docs/topics/auth.txt b/docs/topics/auth.txt index 35777d075e..efc6e78413 100644 --- a/docs/topics/auth.txt +++ b/docs/topics/auth.txt @@ -664,6 +664,36 @@ the handler, if ``created`` is ``True``, create the associated user profile:: .. seealso:: :doc:`/topics/signals` for more information on Django's signal dispatcher. +Adding UserProfile fields to the admin +-------------------------------------- + +To add the UserProfile fields to the user page in the admin, define an +:class:`~django.contrib.admin.InlineModelAdmin` (for this example, we'll use a +:class:`~django.contrib.admin.StackedInline`) in your app's ``admin.py`` and +add it to a ``UserAdmin`` class which is registered with the +:class:`~django.contrib.auth.models.User` class:: + + from django.contrib import admin + from django.contrib.auth.admin import UserAdmin + from django.contrib.auth.models import User + + from my_user_profile_app.models import UserProfile + + # Define an inline admin descriptor for UserProfile model + # which acts a bit like a singleton + class UserProfileInline(admin.StackedInline): + model = UserProfile + can_delete = False + verbose_name_plural = 'profile' + + # Define a new User admin + class UserAdmin(UserAdmin): + inlines = (UserProfileInline, ) + + # Re-register UserAdmin + admin.site.unregister(User) + admin.site.register(User, UserAdmin) + Authentication in Web requests ==============================