Удалите функциональность “Добавить” в Django admin [дубликат]

StackOverflow https://stackoverflow.com/questions/1217901

  •  10-07-2019
  •  | 
  •  

Вопрос

Есть ли способ удалить функциональность "Добавить" на сайте администратора Django?Для определенных объектов я только хочу, чтобы администратор Django мог просматривать их или изменять существующие, но не добавлять новые.

Это было полезно?

Решение

Конечно, вы можете настроить администрирование ОЧЕНЬ детально, следуя инструкциям здесь -- Я считаю, что то, чего вы хотите, может быть получено частично путем переопределения ModelAdmin.save_model(self, request, obj, form, change) в вашем собственном ModelAdmin подкласс, чтобы гарантировать, что в хранилище ничего не произойдет, когда change является ложным (т.е.попытка добавить, а не изменить), и частично путем переопределения ModelAdmin.add_view(self, request, form_url='', extra_context=None) для отображения "добавить представление", которое четко дает понять администратору, что им НЕ будет разрешено добавлять объект по этому маршруту.На самом деле я не выполнял конкретные настройки администратора, которые вам требуются, но я выполнял другие, и они, кажется, работают довольно гладко!

Другие советы

Вы можете настроить разрешения для каждой группы пользователей из интерфейса администратора:попробуйте зайти в /admin/auth/group и с этого момента все должно быть просто.

Это не будет таким детализированным, как решение, предложенное в предыдущем ответе, но оно позаботится о большинстве ваших потребностей без необходимости настраивать администратора.

Если вы измените разрешения на ограничение доступа, вы по-прежнему получите знак плюс в поле FK / MtM.Нажатие на это откроет всплывающее окно с надписью "В разрешении отказано".

На самом деле вы можете полностью удалить знак плюс, не просто отказавшись от регистрации модели у администратора.

У меня есть ситуация, когда у меня есть предопределенные категории, из которых я хочу, чтобы пользователи могли выбирать более одной.Лучший способ сделать это - использовать поле models.ManyToMany.Вы можете зарегистрировать модель у администратора, ввести требуемые данные, а затем удалить регистрацию.

Простой и эффективный способ - установить max_num=0 для этого конкретного встроенного.

Предложение Сатьи установить max_num = 0 работает отлично.

В соответствии с документами Django по классу ModelForm:

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

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

и

Как и в случае с обычными наборами форм, вы можете использовать max_num и дополнительные параметры modelformset_factory, чтобы ограничить количество отображаемых дополнительных форм.

max_num не препятствует отображению существующих объектов

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top