Администратор Django ограничил доступ к списку - PullRequest
0 голосов
/ 17 января 2019

Вот модель:

class Person(models.Model):
    name= models.CharField(max_length=100, blank=True)
    identity_number= models.IntegerField(unique=True)

name поле должно быть открытым, identity_number, однако, должно быть конфиденциальным.

Я хотел бы показать name в представлении списка администратора и оба поля в представлении формы изменения.

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

Это означает, что первая группа пользователей не должна видеть ссылки для изменения формы, и если они пытаются получить прямой доступ к странице формы изменения, 403 (или что-то подобное) должно быть возвращено. Как этого добиться?

1 Ответ

0 голосов
/ 18 января 2019

Если под list view вы подразумеваете changelist_view, то вы можете сделать:

class MyModelAdmin(admin.ModelAdmin):
    list_display = ('name', 'identity_number', )

    def changelist_view(self, request, extra_context=None):
        if request.user.groups.filter(name='your_group_name').exists():
            self.list_display = ('name', )
            # if you dont want any links to the change_form
            self.list_display_links = None
        return super(MyModelAdmin, self).changelist_view(request, extra_context)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...