2010-08-12 35 views

Trả lời

4

tôi đã làm nó theo cách này:

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

nhưng tôi cần phải lặp lại với change_view quá :(, ai đó có phương pháp khác? nhờ – Asinox

+0

Bạn không thể làm tương tự cho 'change_view'? –

+0

tất cả tốt, tôi đã làm nó , chỉ cần tôi muốn biết nếu có một cách khác :) – Asinox

0

Nếu bạn có rất nhiều quan điểm, bạn có thể dùng trang trí này:

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 

cách sử dụng: @exclude (fields = ('fonction', 'fonction_ar'))

3

Ghi đè thuộc tính loại trừ là một chút nguy hiểm trừ khi bạn nhớ đặt lại cho các quyền khác, cách tốt hơn có thể là ghi đè phương thức get_form.

xem: Django admin: exclude field on change form only

Các vấn đề liên quan