1

Django 有list_editable. 我需要编辑is_active标志。

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)

我把它放进去admin.py,我已经注册了我的admin.ModelAdmin代码。显示器很好。所以MyUserAdmin工作正常。

由于 clean 方法,此代码应该会失败。但它没有。它MyUserAdminForm显然没有使用。我需要清理 is_active。

谢谢。


注意我继承自admin.ModelAdmin而不是UsreAdmin. 我已经使用了我可以拥有的所有组合......


更新

我认为这段代码只对编辑页面有用,对list_editable选项没有用。

4

1 回答 1

2

也许问题是你应该从 django 的管理模型中继承你的自MyUserAdmin定义UserAdmin......

在这里你可以找到一个如何做到这一点的例子:Customizing an Admin form in Django while also using autodiscover

当您添加这样的更改时,您应该重新启动服务器(重新启动 manage.py 或 apache 或您正在使用的任何内容)

于 2012-07-08T16:47:20.810 回答