2010-08-12 190 views

回答

4

我做了这样:

admin.py

def add_view(self, request, form_url='', extra_context=None): 
     if not request.user.is_superuser:  
      self.exclude=('activa',)   
     return super(NoticiaAdmin, self).add_view(request, form_url='', extra_context=None) 
+1

但我需要与change_view重复太:(,人有另一种方法? 感谢 – Asinox 2010-08-12 05:06:31

+0

不能为'做同样的change_view'? – 2010-08-12 08:16:04

+0

都很好,我做到了,只是我想知道是否有另一种方式:) – Asinox 2010-08-12 14:26:56

0

如果你有很多的看法,你可以使用这个装饰:

def exclude(fields=(), permission=None): 
    """ 
     Exclude fields in django admin with decorator 
    """ 
    def _dec(func): 
     def view(self, request, *args, **kwargs): 
      if not request.user.has_perm(permission): 
       self.exclude=fields 
      return func(self, request, *args, **kwargs) 
     return view 
    return _dec 

用法: @exclude(fields =('fonction','fonction_ar'))