cách tôi sẽ loại trừ một trường trong quản trị django nếu người dùng không phải là quản trị viên cấp cao?Loại trừ một trường trong quản trị django cho người dùng không phải là quản trị viên cấp cao
nhờ
cách tôi sẽ loại trừ một trường trong quản trị django nếu người dùng không phải là quản trị viên cấp cao?Loại trừ một trường trong quản trị django cho người dùng không phải là quản trị viên cấp cao
nhờ
tôi đã làm nó theo cách này:
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)
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'))
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
.
Trong tương lai, có vẻ như sẽ có một cái móc get_fields. Nhưng nó chỉ ở nhánh chính, không phải 1.5 hoặc 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
Tính năng này hoạt động ở mức 1,7 và tiến lên – beruic
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
Bạn không thể làm tương tự cho 'change_view'? –
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