Wie ich ein Feld in Django Admin ausschließen, wenn die Benutzer nicht Super Admin sind?Ausschließen eines Feldes in Django Admin für Benutzer nicht Super Admin
dank
Wie ich ein Feld in Django Admin ausschließen, wenn die Benutzer nicht Super Admin sind?Ausschließen eines Feldes in Django Admin für Benutzer nicht Super Admin
dank
ich es auf diese Weise tat:
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)
Wenn Sie viele Ansichten haben, können Sie diese Dekorateur verwenden können:
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
Verwendung: @exclude (fields = ('fonction', 'fonction_ar'))
Das Überschreiben der Eigenschaft exclude ist ein wenig gefährlich, es sei denn, Sie erinnern sich, es für andere Berechtigungen zurückzusetzen, ein besserer Weg könnte sein, die Methode get_form
zu überschreiben.
In Zukunft sieht es aus wie es ein get_fields Haken sein. Aber es ist nur im Master-Zweig, nicht 1,5 oder 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
Dies funktioniert in 1.7 und weiter – beruic
, aber ich brauche auch mit dem change_view zu wiederholen :(jemand eine andere Methode haben? dank – Asinox
Sie nicht das gleiche tun für 'change_view'? –
alles in Ordnung, ich tat es , nur würde ich gerne wissen, ob es einen anderen Weg gibt :) – Asinox