动态排除内联django admin中的字段

时间:2015-01-09 18:07:45

标签: django-admin

我想根据请求用户排除内联中的某些字段。

我知道我可以通过'get_formsets','add_view','change_view'等方法处理这个问题,但我不确定语法是什么。

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

我使用内联类中的下一个代码实现了我所需要的:

def get_formset(self, request, obj=None, **kwargs):
        if request.user.groups.all().count() > 0:
            if request.user.groups.all()[0].name == 'User Group Name':
                kwargs['exclude'] = ['field_to_exclude',]
        return super(MyInline, self).get_formset(request, obj, **kwargs)

这个问题的答案给了我提示:different fields for add and change pages in admin

答案 1 :(得分:0)

还有 get_exclude 钩子:

class FoodInline(TabularInline):
    model = Food

    def get_exclude(self, request, obj=None):
        group = request.user.groups.first()

        if group and group.name == 'User Group Name':
            return ['field_to_exclude', ]

        return self.exclude