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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Django 管理員在 UserAdmin 中排除

Django 管理員在 UserAdmin 中排除

翻閱古今 2022-07-26 10:55:12
目前我有這個(gè)用戶代理模型: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)我在管理員上使用任何形式的代理模型時(shí),它會(huì)返回以下錯(cuò)誤:“在‘UserProxyForm’中找不到鍵‘first_name’。選項(xiàng)有:date_joined、email、groups、is_active、is_staff、is_superuser、last_login、password、user_permissions、username?!蔽艺J(rèn)為這很奇怪,我試圖只排除is_staff,現(xiàn)在它返回:“在‘UserProxyForm’中找不到鍵‘is_staff’。選項(xiàng)有:date_joined、email、first_name、groups、is_active、is_superuser、last_login、last_name、password、user_permissions、username?!睘槭裁磿?huì)這樣?代理模型不應(yīng)該包含基本模型中的所有字段嗎?
查看完整描述

1 回答

?
慕尼黑的夜晚無(wú)繁華

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊

在閱讀了 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)在我可以定義需要顯示哪些字段


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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