Я не уверен, является ли это ошибкой, или я просто пропускаю что-то (хотя я уже проанализировал документацию о, встраивает), но:
Скажем, у меня есть модель A. Модель A является встроенной из модели B. У пользователя U есть полный доступ к модели B, но только измените полномочия на модель A (так, нет добавьте, ни удалите).
Однако при редактировании модели B, пользователь можно все еще видеть, "Добавьте другой" ссылка внизу, хотя U не имеет, добавляют полномочия для той соответствующей модели.
Что случилось? Почему та ссылка продолжает показывать? Моя логика говорит, что, если U не имеет полномочий добавить A, ссылка не должна больше появляться.
Кроме того, идеально, я хотел бы дать Вам, только просматривают права на модель A (таким образом, не добавляют, удаляют или изменяются - только просматривают), но я читал о том (странный, если Вы спрашиваете меня), философия, согласно которой, "Если Вы не доверяете U, просто запрещаете его доступа к администраторской области все вместе". Своего рода глупая доктрина.
Прямо сейчас я пытаюсь моделировать это 'представление только полномочия' путем отъезда U только с правами изменения и установить все поля как только для чтения. Но я думаю, что это - своего рода глупый подход и может также вызвать проблемы как вещь полномочий выше...
Как среднее число, программисту Django нравлюсь я, достигает полномочий только для представления, и больше всего как я должен избавиться от, "Добавьте другой" ссылка у основания администраторской формы редактирования?
Заранее спасибо!
Если мне нужна доступная только для чтения версия того, что находится в админке, я просто пишу несколько обычных представлений Django и не показываю их админке.
Я не думаю, что то, о чем вы говорите (разрешение изменений объекта, но не его встроенных строк), действительно поддерживается администратором. Не поймите меня неправильно: администратор очень гибкий и полезный, но он не предназначен для того, чтобы делать все за вас.
Я вижу, что единственный способ получить такой контроль в админке - это не вставлять A.
«Если вы не доверяете U, просто запретите ему доступ к админке». Вид дурацкой доктрины.
Не совсем так, если учесть, что администратор не предназначен для обеспечения необходимого уровня усиления безопасности, чтобы гарантировать такой мелкозернистый уровень контроля доступа.В админке очень много мест из-за его открытой и расширяемой природы, где могут скрываться ошибки (обычно в коде, написанном пользователем), которые могут быть использованы злоумышленниками. Вот почему ненадежные пользователи всегда должны видеть, что все URL-адреса администратора возвращают 404.
В любом случае, когда требования контроля доступа настолько детализированы, становится маловероятным, что общее (например, django.contrib
) решение подойдет. .