python - Django Admin - 覆盖 get_form 后缺少内联表单

标签 python django django-forms django-admin

如果登录的用户不是 super 用户,我需要在 Django Admin 的表单中隐藏一些字段。这是我想出的:

    def get_form(self, request, obj=None, **kwargs):
        form = super(RestauranteAdmin, self).get_form(request, obj, **kwargs)
        if not request.user.is_superuser:
            form.base_fields.pop('approved')
            form.base_fields.pop('day_of_the_week')
            form.base_fields.pop('photo')
        form.label_suffix = ''
        return form

这确实隐藏了必要的字段,但出于某种原因,如果用户不是 super 用户,管理员也会停止呈现我的内联。据我所知,这个方法应该与内联无关。我错过了什么吗?

谢谢,

最佳答案

在调用父方法之前排除它

希望对你有帮助

def get_form(self, request, obj=None, **kwargs):
    if not request.user.is_superuser:              
       self.exclude = []
    else:    
       self.exclude = ['approved','day_of_the_week','photo']

    return super(RestauranteAdmin, self).get_form(request, obj, **kwargs)

关于python - Django Admin - 覆盖 get_form 后缺少内联表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12257081/

相关文章:

python - 试图做简单的 UDP 服务器客户端时 Argparse 错误

python - Django:调用自己的模型方法时出现AttributeError

django - Django 中的排序顺序 : possible to ignore "The" prefix when sorting?

python - Django 模型的额外参数

python - ContentFile 未保存在 Django 模型 FileField 中

python - 异步 : RuntimeError this event loop is already running

python - 在 python 中处理斜杠

django - 保存模型后如何向 django 管理员显示消息?

python - 检查 Django 中是否存在用户名

Django 表单; 'bool' 对象没有属性 'get'