Как удалить кнопку «Добавить» в администраторе 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
  • Django: ModelMultipleChoiceField не выбирает начальные варианты
  • Nullable ForeignKeys и удаление экземпляра модели с ссылкой
  • Как use_for_related_fields работает в Django?
  • Сигналы Django против основного метода сохранения
  • В чем разница между Model.id и Model.pk в django?
  • Наследование сложной модели - Django
  • Фильтр Django много-ко-многим содержит
  • Python - лучший язык программирования в мире.