加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Django:如何从特定用户的管理表单中删除字段?

发布时间:2020-12-20 12:26:48 所属栏目:Python 来源:网络整理
导读:我的管理员看起来像这样(没有排除变量): class MovieAdmin(models.ModelAdmin) fields = ('name','slug','imdb_link','start','finish','added_by') list_display = ('name','added_by') list_filter = ('finish',) ordering = ('-finish',) prepopulated_f
我的管理员看起来像这样(没有排除变量):

class MovieAdmin(models.ModelAdmin)
    fields = ('name','slug','imdb_link','start','finish','added_by')
    list_display = ('name','added_by')
    list_filter = ('finish',)
    ordering = ('-finish',)
    prepopulated_fields = {'slug': ('name',)}

    form = MovieAdminForm

    def get_form(self,request,obj=None,**kwargs):
        form = super(MovieAdmin,self).get_form(request,obj,**kwargs)
        form.current_user = request.user
        return form

admin.site.register(Movie,MovieAdmin)

表格:

class MovieAdminForm(forms.ModelForm):

    class Meta:
        model = Movie

    def save(self,commit=False):
        instance = super(MovieAdminForm,self).save(commit=commit)
        if not instance.pk and not self.current_user.is_superuser:
            if not self.current_user.profile.is_manager:
                instance.added_by = self.current_user.profile
        instance.save()
        return instance

我正在尝试删除用户的added_by字段,因为我更喜欢从会话中填充它.我尝试过以下方法:

> Django admin – remove field if editing an object
> Remove fields from ModelForm
> http://www.mdgart.com/2010/04/08/django-admin-how-to-hide-fields-in-a-form-for-certain-users-that-are-not-superusers/

然而,每一个我得到:渲染时的KeyError:在Form中找不到键’added_by’.我似乎需要在表单呈现过程中先前删除该字段,但我仍然坚持在哪里这样做.

那么如何为普通用户排除added_by字段呢?

解决方法

在评估list_display时,您可能会收到该错误.您无法显示已排除的字段.添加了added_by的版本也需要相应的list_display.

def get_form(self,**kwargs):
    current_user = request.user
    if not current_user.profile.is_manager:
        self.exclude = ('added_by',)
        self.list_display = ('name','finish')
    form = super(MovieAdmin,**kwargs)
    form.current_user = current_user
    return form

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读