Django не позволяет суперпользователю видеть данные в / change / page - PullRequest
1 голос
/ 27 сентября 2019

Я использую Django 2.1.5 и использую классы list_display в ModelAdmin для ограничения того, что наши суперпользователи могут видеть на страницах администратора.Есть некоторые конфиденциальные данные, к которым должен иметь доступ только пользователь.

Скажем, у меня есть приложение на основе модели SensitiveObject с id, name, secret и т. Д., Я могу простоисключите secret из list_display, и он никогда не будет отображаться на странице администратора.Однако, когда я перехожу к /admin/full/myapp/sensitiveobject/, у меня будет список этих идентификаторов объектов, и я могу просто перейти к /admin/.../sensitiveobject/<id>/change/, в котором будут показаны все поля, включая те, которые я исключил из list_display.

Можно ли также ограничить то, что я вижу в / change / endpoint?

1 Ответ

0 голосов
/ 27 сентября 2019

Атрибут fields вашего ModelAdmin определяет поля, отображаемые в форме изменений для каждого объекта.

Вы можете сделать это динамическимВы можете переопределить метод get_fields:

def get_fields(request, obj=None):
    fields = []  # Default list of fields
    if request.user.passes_some_test():
        fields.append()  # The secret field
    return fields
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...