【问题标题】:Dynamically excluding fields in inline django admin动态排除内联 django admin 中的字段
【发布时间】:2015-01-09 18:07:44
【问题描述】:

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

我知道我可以用“get_formsets”、“add_view”、“change_view”等方法来处理这个问题,但我不确定语法是什么。

有什么建议吗?

【问题讨论】:

    标签: django-admin


    【解决方案1】:

    还有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
    

    【讨论】:

      【解决方案2】:

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

      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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-21
        • 2012-10-19
        • 2011-07-30
        • 2011-10-20
        • 2014-12-28
        • 2012-05-29
        • 2014-02-05
        相关资源
        最近更新 更多