Добавить свои нередактируемые поля при редактировании объекта в admin django

5 ноября 2016 г. 21:34

Как оказалось, свои нередактируемые поля при редактировании объекта в django не так и сложно. Для этого нужно в admins.py нашего приложения добавить метод с произвольным именем, передав аргумент obj (или другой по вкусу) и определив некоторые свойства. Например, чтобы просто отобразить произвольный html-код нужно написать следующее:

@admin.register(Order)
class OrderAdmin(admin.ModelAdmin):
    readonly_fields = ('test_field', )

    def test_field(self, obj):
        return '<a href="\test_page\">Открыть тестовую страницу</a>'

    test_field.short_description = 'Ссылка'
    test_field.allow_tags = True

Как видно из примера выше, создаём метод, например test_field(self, obj), и добавляем его в список readonly_fields.

Оцените статью

0 из 5 (всего 0 оценок)

Поля, отмеченные звёздочкой ( * ) , являются обязательными.

Спасибо за ваш отзыв!

После нажатия кнопки "Отправить" ваше сообщение будет доставлено мне на почту.

Автор статьи

Права на использование материала, расположенного на этой странице http://vivazzi.pro/it/noneditable-fields-in-admin/:

Разрешается копировать материал с указанием её автора и ссылки на оригинал без использования параметра rel="nofollow" в теге <a>. Использование:

Автор статьи: Мальцев Артём
Ссылка на статью: <a href="http://vivazzi.pro/it/noneditable-fields-in-admin/">http://vivazzi.pro/it/noneditable-fields-in-admin/</a>

Подробнее: Правила использования сайта

Комментариев: 0

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

Чтобы оставить комментарий от своего имени войдите или зарегистрируйтесь обычным способом или через социальные сети:

Отправить

На данный момент нет специального поиска, поэтому я предлагаю воспользоваться обычной поисковой системой, например, Google, добавив "vivazzi" после своего запроса.

Попробуйте