Django has list_editable. I need to edit is_active flag.
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin
from django.contrib import admin
from django.db.models import Q
from django import forms
class MyUserAdminForm(forms.ModelForm):
class Meta:
model = User
#def clean_is_active(self):
# do something that validates your data
# print ' I am here... '
# print self.cleaned_data
# print self
def clean(self):
k = 1
class MyUserAdmin(UserAdmin):
list_display = ["id", "username", "email", "is_staff", "is_superuser", "is_active", "date_joined"]
search_fields = ["username", "email"]
list_display_links = ["id", "username"]
list_editable = ("is_active",)
list_per_page = 50
form = MyUserAdminForm
# Had to unregister the User so it could be registered with MyUserAdmin
admin.site.unregister(User)
admin.site.register(User, MyUserAdmin)
I put this in admin.py, and I've registered my admin.ModelAdmin code. The display is fine. So MyUserAdmin is working fine.
This code should fail because of the clean method. But it didn't. It isn't using MyUserAdminForm apparently. I need to clean the is_active.
Thanks.
Note I have inherited from admin.ModelAdmin rather than UsreAdmin. I have used all the combinations I can have......
Update
I think this piece of code is only useful for the edit page, not for the list_editable option.