2013-12-05 5 views
7

Сегодня я пришел с требованием, когда мне нужно реализовать разрешение на уровне поля, ища наилучший способ.Разрешение на уровне поля Django

class ABC(models.Model): 
    field1 = ..... 
    field2 = ..... 
    field3 = ..... 

Создать две группы (А и В) и назначенном разрешение, как можно добавлять/редактировать/удалять и другие могут добавлять только/редактировать. Но теперь нам нужна помощь в следующем: -

Я хочу, чтобы первый пользователь группы вошел в админку, он должен уметь видеть все три поля, но если во второй группе пользователи регистрируются, они должны видеть только поле1.

Я хочу это в Джанго админ, как мне нужно выполнить некоторые манипуляции после these.My Джанго версии 1.3

Заранее спасибо

+0

Вы хотите это в django-admin, или у вас есть свой? Требование не очень ясное –

+0

Я хочу это в django admin. Django 1.3 – user734353

+0

Ну, в таком случае, AFAIK, у вас есть серьезные хаки. Это не то, что Django admin может обрабатывать из коробки. –

ответ

2

В вашей admin.py

class ABCAdmin(admin.ModelAdmin): 
    fields = [.....] # here comes the fields open to all users 

    def change_view(self, request, object_id, extra_context=None): # override default admin change behaviour 
     if request.user in gruop2: # an example 
      self.fields.append('field2') # add field 2 to your `fields` 
      self.fields.append('field3') # add field 3 to your `fields` 

Вы можете использовать the docs чтобы узнать, что доступно. Выше приведен пример из одного из моих обычаев. Вам также может понадобиться определить change_view и add_view.

+0

def get_form (self, request, obj = None, ** kwargs): if request.user.groups.filter (name = "Group 1"): self.exclude = ("is_approved",) form = super (SupplierAdmin, self) .get_form (request, obj, ** kwargs) Форма возврата – user734353

+0

По-прежнему появляется поле! – user734353

Смежные вопросы