6
A
回答
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)
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'))
3
覆盖exclude属性是有点危险的,除非您记得为其他权限设置它,更好的方法可能是覆盖get_form
方法。
1
在未来,它看起来像会有一个get_fields挂钩。但它只在主分支中,不是1.5或1.6。
def get_fields(self, request, obj=None):
"""
Hook for specifying fields.
"""
return self.fields
https://github.com/django/django/blob/master/django/contrib/admin/options.py
+0
这工作在1.7和前锋 – beruic 2016-12-01 21:48:29
但我需要与change_view重复太:(,人有另一种方法? 感谢 – Asinox 2010-08-12 05:06:31
不能为'做同样的change_view'? – 2010-08-12 08:16:04
都很好,我做到了,只是我想知道是否有另一种方式:) – Asinox 2010-08-12 14:26:56