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

ここで、その方法の例を見つけることができます:自動検出を使用しながら、Django で管理フォームをカスタマイズする

このような変更を加えたら、サーバーを再起動する必要があります (manage.py や apache など、使用しているものを再起動します)。

于 2012-07-08T16:47:20.810 に答える