第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Django 管理員在 UserAdmin 中排除

Django 管理員在 UserAdmin 中排除

翻閱古今 2022-07-26 10:55:12
目前我有這個用戶代理模型:class UserProxy(User):    class Meta:        verbose_name = 'Staff'        verbose_name_plural = 'Staffs'        proxy = True在管理員方面,我有以下管理員:class StaffAdmin(UserAdmin):    def get_queryset(self, request):        qs = super(StaffAdmin, self).get_queryset(request)        return qs.filter(is_staff=True)    exclude = ('first_name', 'last_name',)    def save_model(self, request, obj, form, change):        if request.user.is_superuser:            obj.is_staff = True            obj.save()admin.site.register(UserProxy, StaffAdmin)當(dāng)我在管理員上使用任何形式的代理模型時,它會返回以下錯誤:“在‘UserProxyForm’中找不到鍵‘first_name’。選項有:date_joined、email、groups、is_active、is_staff、is_superuser、last_login、password、user_permissions、username?!蔽艺J為這很奇怪,我試圖只排除is_staff,現(xiàn)在它返回:“在‘UserProxyForm’中找不到鍵‘is_staff’。選項有:date_joined、email、first_name、groups、is_active、is_superuser、last_login、last_name、password、user_permissions、username?!睘槭裁磿@樣?代理模型不應(yīng)該包含基本模型中的所有字段嗎?
查看完整描述

1 回答

?
慕尼黑的夜晚無繁華

TA貢獻1864條經(jīng)驗 獲得超6個贊

在閱讀了 django UserAdmin 類https://github.com/django/django/blob/master/django/contrib/auth/admin.py#L45


似乎 UserAdmin 使用字段集并且不使用排除,我將 StaffAdmin 重寫為:


class StaffAdmin(UserAdmin):


    def get_queryset(self, request):

        qs = super(StaffAdmin, self).get_queryset(request)

        return qs.filter(is_staff=True)


    list_display = ('username', 'email', 'is_staff')

    search_fields = ('username', 'email')

    fieldsets = (

        (None, {'fields': ('username', 'password')}),

        (_('Personal info'), {'fields': ('email',)}),

        (_('Permissions'), {

            'fields': ('is_active', 'is_staff', 'is_superuser', 'groups'),

        }),

        (_('Important dates'), {'fields': ('last_login', 'date_joined')}),

    )


    add_fieldsets = (

        (None, {

            'classes': ('wide',),

            'fields': ('username', 'email', 'password1', 'password2', ),

        }),

    )


    def save_model(self, request, obj, form, change):

        if request.user.is_superuser:

            obj.is_staff = True

            obj.save()

admin.site.register(UserProxy, StaffAdmin)

現(xiàn)在我可以定義需要顯示哪些字段


查看完整回答
反對 回復(fù) 2022-07-26
  • 1 回答
  • 0 關(guān)注
  • 83 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號