Как удалить кнопку «Добавить» в администраторе Django для конкретной модели?

У меня есть модель Django «AmountOfBooks», которая используется как баланс для модели книги.
Если это не очень хороший шаблон для моделирования базы данных, просто скажите это.

Во всяком случае, в AmountOfBooks есть два поля:

class AmountOfBooks(models.Model): book = models.ForeignKey(Book, editable=False) amount = models.PositiveIntegerField(default=0, editable=False, help_text="Amount of book.") 

Они установлены в editable = False, потому что эта модель предназначена для редактирования только кодом.
Например. когда книга создается для объекта для этой книги в AmountOfBooks, устанавливается значение 0 и когда книги добавляются или выполняется баланс, либо увеличивается, либо уменьшается.

Таким образом, поля для модели AmountOfBooks не отображаются, когда я нажимаю кнопку «Добавить количество книг» в администраторе Django.

Но я хочу удалить эту кнопку из admin Django только для модели TotalOfBooks.
Как это сделать ?

ОБНОВИТЬ
Продолжение этого вопроса доступно на странице Как сделать модель Django просто видной (только для чтения) в Django Admin?

3 Solutions collect form web for “Как удалить кнопку «Добавить» в администраторе Django для конкретной модели?”

Это просто, просто перегрузите метод has_add_permission в свой класс Admin следующим образом:

 class MyAdmin(admin.ModelAdmin): def has_add_permission(self, request): return False 

Для этого вам необходимо переопределить метод has_add_permission в вашем классе Admin:

 class AmountOfBooksAdmin(admin.ModelAdmin): def has_add_permission(self, request): return False # to disable editing for specific or all fields # you can use readonly_fields attribute # (to see data you need to remove editable=False from fields in model): readonly_fields = ('book', 'amount') 

Документы здесь: https://docs.djangoproject.com/ru/dev/ref/contrib/admin/

Вы спросили о своем дизайне, поэтому я расскажу об этом в первую очередь. Если вы хотите сохранить историю своего запаса, то наличие отдельной таблицы (модели) имеет смысл, но тогда вам понадобится поле временной метки и уникальное ограничение (книга, временная метка). Теперь, если вы просто хотите сохранить текущую акцию, отношения между книгой и суммой действительно один к одному, поэтому поле суммы действительно относится к таблице книг. В этом случае вам просто нужно добавить «сумму» в атрибут «Readonly_fields» модели ModelAdmin книги, и ваша проблема решена.

  • Как обновить экземпляр модели Django с запросом.POST, если POST является вложенным массивом?
  • Модель Django задает внешний ключ для поля другой модели
  • Группа моделей Django по дате datetime
  • Использование self в классах Django Model
  • Диапазон Django для целочисленного поля модели как ограничение
  • Django - проверьте, содержит ли список что-то в шаблоне
  • Структура проекта Django, рекомендуемая структура для совместного использования расширенной модели «Пользователь» в приложениях?
  • Получить список всех установленных приложений в Django и их атрибутах
  • Python - лучший язык программирования в мире.