django - Customise UserAdmin model -


i overriding admin model usersadmin . have added in new attribute:gender column in database. why doesn't work ?? how overriding admin model

class useradmin(admin.modeladmin):     list_display = ('email', 'first_name', 'last_name','gender')     list_filter = ('is_staff', 'is_superuser')      admin.site.unregister(user)     admin.site.register(user, useradmin) 

i getting error message : useradmin.list_display[3], 'gender' not callable or attribute of 'useradmin' or found in model 'user'.

edit: class useradmin comes library : django.contrib.auth.admin import useradmin , class defination

class useradmin(admin.modeladmin):     add_form_template = 'admin/auth/user/add_form.html'     change_user_password_template = none     fieldsets = (         (none, {'fields': ('username', 'password')}),         (_('personal info'), {'fields': ('first_name', 'last_name', 'email',)}),         (_('permissions'), {'fields': ('is_active', 'is_staff', 'is_superuser',                                        'groups', 'user_permissions')}),         (_('important dates'), {'fields': ('last_login', 'date_joined')}),     )     add_fieldsets = (         (none, {             'classes': ('wide',),             'fields': ('username', 'password1', 'password2')}         ),     )     form = userchangeform     add_form = usercreationform     change_password_form = adminpasswordchangeform     list_display = ('username', 'email', 'first_name', 'last_name', 'is_staff')     list_filter = ('is_staff', 'is_superuser', 'is_active', 'groups')     search_fields = ('username', 'first_name', 'last_name', 'email')     ordering = ('username',)     filter_horizontal = ('groups', 'user_permissions',)      def get_fieldsets(self, request, obj=none):         if not obj:             return self.add_fieldsets         return super(useradmin, self).get_fieldsets(request, obj)      def get_form(self, request, obj=none, **kwargs):         """         use special form during user creation         """         defaults = {}         if obj none:             defaults.update({                 'form': self.add_form,                 'fields': admin.util.flatten_fieldsets(self.add_fieldsets),             })         defaults.update(kwargs)         return super(useradmin, self).get_form(request, obj, **defaults)      def get_urls(self):         django.conf.urls import patterns         return patterns('',             (r'^(\d+)/password/$',              self.admin_site.admin_view(self.user_change_password))         ) + super(useradmin, self).get_urls()      def lookup_allowed(self, lookup, value):         # see #20078: don't want allow lookups involving passwords.         if lookup.startswith('password'):             return false         return super(useradmin, self).lookup_allowed(lookup, value)      @sensitive_post_parameters()     @csrf_protect_m     @transaction.commit_on_success     def add_view(self, request, form_url='', extra_context=none):         # it's error user have add permission not change         # permission users. if allowed such users add users,         # create superusers, mean have         # permission change users. avoid problem entirely,         # disallow users adding users if don't have change         # permission.         if not self.has_change_permission(request):             if self.has_add_permission(request) , settings.debug:                 # raise http404 in debug mode user gets helpful                 # error message.                 raise http404(                     'your user not have "change user" permission. in '                     'order add users, django requires user '                     'account have both "add user" , "change user" '                     'permissions set.')             raise permissiondenied         if extra_context none:             extra_context = {}         username_field = self.model._meta.get_field(self.model.username_field)         defaults = {             'auto_populated_fields': (),             'username_help_text': username_field.help_text,         }         extra_context.update(defaults)         return super(useradmin, self).add_view(request, form_url,                                                extra_context)      @sensitive_post_parameters()     def user_change_password(self, request, id, form_url=''):         if not self.has_change_permission(request):             raise permissiondenied         user = get_object_or_404(self.queryset(request), pk=id)         if request.method == 'post':             form = self.change_password_form(user, request.post)             if form.is_valid():                 form.save()                 msg = ugettext('password changed successfully.')                 messages.success(request, msg)                 return httpresponseredirect('..')         else:             form = self.change_password_form(user)          fieldsets = [(none, {'fields': list(form.base_fields)})]         adminform = admin.helpers.adminform(form, fieldsets, {})          context = {             'title': _('change password: %s') % escape(user.get_username()),             'adminform': adminform,             'form_url': form_url,             'form': form,             'is_popup': '_popup' in request.request,             'add': true,             'change': false,             'has_delete_permission': false,             'has_change_permission': true,             'has_absolute_url': false,             'opts': self.model._meta,             'original': user,             'save_as': false,             'show_save': true,         }         return templateresponse(request,             self.change_user_password_template or             'admin/auth/user/change_password.html',             context, current_app=self.admin_site.name)      def response_add(self, request, obj, post_url_continue=none):         """         determines httpresponse add_view stage. defers         superclass implementation customized because user model         has different workflow.         """         # should allow further modification of user added i.e.         # 'save' button should behave 'save , continue editing'         # button except in 2 scenarios:         # * user has pressed 'save , add another' button         # * adding user in popup         if '_addanother' not in request.post , '_popup' not in request.post:             request.post['_continue'] = 1         return super(useradmin, self).response_add(request, obj,                                                    post_url_continue)      admin.site.register(group, groupadmin)     admin.site.register(user, useradmin)   class user(abstractuser): """ users within django authentication system represented model.  username, password , email required. other fields optional. """ gender = models.charfield(_('gender'),max_length=30)   class meta:     swappable = 'auth_user_model' 

have read of "extending user model" section of customising authentication in django page. gives example of how use one-to-one relationship include additional information in custom user class, how add these new fields user page in django admin.


Comments